PDA

View Full Version : سوال: استفاده از اطلاعات کتابخانه ملی (ISO و Marc)



hamid_200611
یک شنبه 04 اسفند 1387, 12:49 عصر
سلام به همه دوستان
نرم افزار کتابنشناسی ملی کتابخانه ملی ایران اطلاعات یک کتاب را در فایلی با پسوند iso
اکسپرت می کند می خواستم اطلاعات داخل این فایل و ببینم مثل در دیتابیس ذخیره کنم البته وقتی با یه ادیتور مثل notepad بازش می کنم کاراکتر عجیب قریب می ده لطفا کمک کنید
:گیج:

#aliyari_C
یک شنبه 04 اسفند 1387, 12:58 عصر
پسر خوب این فایل Ecrypt شده است یعنی به رمز درآورده شده
-------------------------------
زندگی هیچ ارزشی ندارد ولی ارزش هیچ چیز هم به همه زندگی نیست

hamid_200611
یک شنبه 04 اسفند 1387, 18:06 عصر
پسر خوب این فایل Ecrypt شده است یعنی به رمز درآورده شده
-------------------------------
زندگی هیچ ارزشی ندارد ولی ارزش هیچ چیز هم به همه زندگی نیست
درسته شاید اینطور باشه ولی برنامه ای مدیریت کتابخانه به چه صورت از اطلاعات اون استفاده می کنند:بوس:

#aliyari_C
یک شنبه 04 اسفند 1387, 23:24 عصر
اون توی برنامه اش یکسری حلقه ویا شاید شمارنده های خاص خود را دارد که هر حرفی را به کد مخصوص تبدیل می کند یعنی % شاید به جای کاراکتر "ب"و.................

majid325
دوشنبه 05 اسفند 1387, 00:59 صبح
iso یک استاندارد جهانی برای DataBase کتابخانه هست , میتونی برای شناخت فیلد و جداول اون , کتاب مربوط به استاندارد iso رو مطالعه کنی......

saghari
چهارشنبه 04 آذر 1388, 13:05 عصر
سلام
من یه نرم افزار کتابخانه دارم که سفارش دهنده میخواد نرم افزار بتونه اطلاعات کتابشناختی مدارک رو با فرمت iso یا marcبخونه و import کنه و اگه بشه به این دو فرمت اکسپورت هم کنه که عالیه.
اگه کسی اطلاعاتی در این زمینه داره و میتونه کمکم کنه بسیار ممنون میشم.
ضمنا در مورد پرداخت هزینه برای اطلاعات و همکاری هم در خدمتم.

reza_saghari@yahoo.com

با تشکز

masoodinfo
دوشنبه 17 اسفند 1388, 20:23 عصر
جواب این بنده خدا رو که ندادید.لااقل اگر الان کسی می دونه بگه.
plz help meeeeeeeeeeeeeee

sina_saravi1
سه شنبه 18 اسفند 1388, 05:41 صبح
سلام

شما اگه یه نمونه از فایل های Iso و غیره که میخوای ازش استفاده کنی رو اینجا بزار تا فایل رو بر انداز کنیم و بهتون اطلاع بدیم

میشه تو یه فایل MP3 هم به جای موسیقی متن باشه
آخه فرمت زیاد مهم نیست
نوع نگارش فایل مهمه

masoodinfo
سه شنبه 18 اسفند 1388, 21:48 عصر
سلام

شما اگه یه نمونه از فایل های Iso و غیره که میخوای ازش استفاده کنی رو اینجا بزار تا فایل رو بر انداز کنیم و بهتون اطلاع بدیم

میشه تو یه فایل MP3 هم به جای موسیقی متن باشه
آخه فرمت زیاد مهم نیست
نوع نگارش فایل مهمه


با سلام خدمت شما .

این فایل ها رو از سایت کتابخانه ملی هم میشه تهیه کرد.در این فایل ها از iso2709 اگر اشتب نکنم استفاده شده که و به این نام مشناسند و همچنین مارک ایران یا ایران مارک هم گفته میشه.در سیستم کتابخانه استفاده میشه و برای فهرست نویسی با سرعت بیشتر که کار میاد.

یک نمونه از این فایل::لبخندساده:

45365

saghari
جمعه 21 اسفند 1388, 01:20 صبح
با سلام
من هم شدیدا نیاز به یک کانورتور یا کد برای خواندن فایلهای iso یا مارک مربوط به کتابخانه ملی دارم.
اگه احیانا به نتیجه رسید حتما به من هم اطلاع بدید.
reza_saghari@yahoo.com
با تشکر

djscsi
جمعه 21 اسفند 1388, 14:00 عصر
iso یک استاندارد جهانی برای DataBase کتابخانه هست , میتونی برای شناخت فیلد و جداول اون , کتاب مربوط به استاندارد iso رو مطالعه کنی......

میشه بیشتر توضیح بدید
منظورم اینه که اگه sql برا پایگاه داده استفاده بشه که پسوندش این نیست .از چی برای پایگاه داده استفاده شده؟
اگه منم بخوام پسوند پایگاه دادهام همین بشه باید چه کار کنم؟

mehdi.mousavi
جمعه 21 اسفند 1388, 14:14 عصر
سلام.
فایلهایی با دنباله ISO، فایلهای Image هستن... این فایلها Binary هستن و نمیشه اونها رو با Notepad مشاهده کرد. نرم افزارهای زیادی برای کار با فایلهای ISO وجود داره، که به اعتقاد من، Ultra ISO (http://www.ezbsystems.com/ultraiso/) یکی از بهترین هاست (البته رایگان نیست). فکر میکنم NERO هم ابزاری برای Mount کردن اینگونه فایلها داشتش، اما خوب، واقعا یادم نمیاد.

اگر هدفتون فقط باز کردن اینگونه فایلهاست، میتونید از 7Z استفاده کنید (http://www.7-zip.org/). 7z رایگان و Open Source هستش و از این فایلها پشتیبانی میکنه:


Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR
Unpacking only: ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR and Z.


در نتیجه، شما میتونید محتوای فایلهای ISO رو براحتی روی Drive مورد نظر خودتون باز کرده و مشاهده کنید. دقت کنید. فایلهای ISO فشرده نیستن و فقط Image ای از داده اصلی هستش، چیزی مثل nrg، mdf و ...

ضمنا، این فایلها مستقیما در VirtualBox و Virtual PC و Windows 7 قابل استفاده هستن. برای مشاهده نحوه استفاده از این فایلها در Win7 میتونید به نوشته های Scott Hanselman رجوع کنید.

موفق باشید.

پاورقی: این سوال ربطی به این بخش نداره و بعد از مدتی منتقل/حذف خواهد شد.

saghari
جمعه 21 اسفند 1388, 16:50 عصر
دوست عزیز.
این iso اونی نیست که شما توضیح دادید. پسوند این فایلها txt یا html هست.
iso در کتابداری یک استاندارد هست برای راحت ترکردن خواندن و نوشتن اطلاعات مدارک (مثل کتاب و ...) کتابخانه و اتفاقا فایلهای iso کتابخانه ملی براحتی هم با Notepad باز میشه و هم نوع html هم داره ولی مهم اینه که از تگ های اون سر در بیاری :افسرده:
این استاندارد اولین بار توسط یونسکو وضع گردید. در این استاندارد برای راحتی انتقال اطلاعات از tag های عددی و البته تعدادی نشانه برای هر منظور (مثل نوع مدرک، عنوان مدرک، نام نویسنده و ....) استفاده میشه.
امروزه در دنیا بیشتر از استاندارد دیگری بنام مارک بجای iso در کتابداری استفاده میکنند.
نسخه ایزویی که کتابخانه ملی استفاده میکنه 2709 هست (اگه درست یادم مونده باشه).
دلیل اینکه معمولا هر شرکتی سراغ نوشتن برنامه برای خواندن اطلاعات iso یا مارک نمیره اینه که تعداد این تگ ها خیلی زیاده و تازه گاهی کتابخانه ها میان یکسری تغییرات تو تگ ها میدن (کاری که فکر کنم شرکت پارس آذرخش هم کرده:عصبانی++:) و لذا شما حتی اگر یه کانورتور هم پیدا کنی نمیتونی اطلاعات اونها رو دریافت کامل دریافت کنی.(خوب حتما میدونید که نرم افزار کتابخانه ملی هم کار همین شرکت هست)
ضمنا اکثر نرم افزارهایی که کار تبدیل رو انجام میدن اطلاعات تگ ها رو میخونن و خروجی xml به شما میدن و شما میتونید از اونها استفاده کنید.
البته من شخصی رو پیدا کردم که کد لازم برای اینکار رو برای فروش داره (ولی یکم بالا میگه :گریه:)
در انتها اگر اطلاعات بیشتری در خصوص خروجی فایلهای کتابهای ملی خواستید بفرمایید تا در حد امکان توضیح بدم

راستی شما میتونید تو سایت کتابخانه ملی سرچ کنید و نتیجه رو به یکی از 3 حالت چاپ، خروجی ISO text و خروجی ISO html دریافت کنید.
اینم یه نمونه فایل که همین العان از سایت کتابخانه ملی گرفتم (خروجی ایزو html)
45506


راستی جناب موسوی امیدوارم با توضیح داده شده تاپیک رو حذف نکنید تا شاید عزیزی باشه که اطلاعات بیشتری برای حل این مشکل داشته باشه.
موفق باشید

mehdi.mousavi
جمعه 21 اسفند 1388, 21:06 عصر
دوست عزیز. این iso اونی نیست که شما توضیح دادید. پسوند این فایلها txt یا html هست. iso در کتابداری یک استاندارد هست برای راحت ترکردن خواندن و نوشتن اطلاعات مدارک (مثل کتاب و ...) کتابخانه و اتفاقا فایلهای iso کتابخانه ملی براحتی هم با Notepad باز میشه و هم نوع html هم داره ولی مهم اینه که از تگ های اون سر در بیاری
موفق باشید

سلام.
من فکر کردم فایل باینری هستش که نوشتن کاراکترهای عجیب میبینم. برای همین فکر کردم فایلهای Image مد نظرشونه. اما درسته. استاندارد ISO 2709 (http://en.wikipedia.org/wiki/ISO_2709)، استانداردی برای Cataloging هستش. MARC هم استانداردهای متفاوتی داره (http://en.wikipedia.org/wiki/MARC_standards)... شما باید ابتدا ببینید فایلی که توسط نرم افزار مورد نظر تولید میشه، بر اساس چه استانداردی تولید شده، تا با رجوع به Document های اون استاندارد، بشه Converter ای براش نوشت (یا پیدا کرد).

موفق باشید.

masoodinfo
شنبه 22 اسفند 1388, 15:11 عصر
یا این تاپیک رو کسی ندیده یا می بینن و بلد نیستند!!!!!!!!!!!!!!!!!!!!!
دوستان این تاپیک رو یه جوری کشوری کنند تا شاید یکی بلد باشه.:اشتباه:

mehdi.mousavi
شنبه 22 اسفند 1388, 16:45 عصر
یا این تاپیک رو کسی ندیده یا می بینن و بلد نیستند! دوستان این تاپیک رو یه جوری کشوری کنند تا شاید یکی بلد باشه.:اشتباه:

سلام.
همونطوریکه گفتم، این استاندارد خودش به sub section های دیگه ای تقسیم میشه. شما دقیقا بگید استاندارد مورد نظر شما کدومه، تا من ببینم میتونم کاری براتون انجام بدم یا خیر.

موفق باشید.

saghari
سه شنبه 25 اسفند 1388, 17:22 عصر
با سلام مجدد خدمت جناب آقای موسوی
اگر در سایت کتابخانه ملی (http://www.nlai.ir/) یک مدرک رو جستجو کنید، پس از آنکه نتیجه جستجو نمایش داده شد، در پایین صفحه گزینه ای بنام "انتخاب فرمت نتايج جستجو " وجود داره و کاربر میتونه نتیجه رو به یکی از حالت های زبر دریافت کنه:
1- فرمت برچسبی
2- فرمت ایزو html
3- فرمت ایزو txt

لازم به توضیح است که کتابخانه ملی ایران از قالب مارک ایران استفاده میکنه.
در واقع در صورتجلسه مورخ 77/5/18 کمیته ملی مارک ایران، یونی مارک رو بعنوان مبنای قالب مارک ایران تصویب کرد.
لیست کامل تگ های استفاده شده در این استاندارد در کتاب رسا (منتشر شده توسط شرکت پارس آذرخش) وجود داره.
مثلا :
001 شناسگر رکورد
002 برقراری شناسگر رکورد
005 شناسگر ویرایش
200 سرعنوان نام افراد
و ...

استاندارد استفاده شده هم همون ایزو 2709 هست که قبلا عرض کرد.

در واقع ما هم استاندارد رو داریم و هم تگ هایی رو که شرکت پارس آذرخش برای کتابخانه ملی استفاده کرده.
چیزی که این وسط لازمه نوشتن کد لازم برای خواندن فایل ایزو HTML یا TXT تولید شده بر اساس استاندارد ایزو هست .
اگه کسی لطف کنه یه نمونه کوچیک کد رو بنویسه و اینجا بزاره من میتونم از طریق پرسنل شرکت برای تمام تگ ها کاملش کنن و برای استفاده عموم بزارم.
"حتما میدونید که تعداد این تگ ها خیلی زیاده و معمولا هر نرم افزار کتابخانه ای بر اساس شکل و نوع طراحی خودش فقط از تعدادی از اونها استفاده میکنه"

موفق و موید باشید

mehdi.mousavi
سه شنبه 25 اسفند 1388, 19:17 عصر
در واقع ما هم استاندارد رو داریم و هم تگ هایی رو که شرکت پارس آذرخش برای کتابخانه ملی استفاده کرده. چیزی که این وسط لازمه نوشتن کد لازم برای خواندن فایل ایزو HTML یا TXT تولید شده بر اساس استاندارد ایزو هست. اگه کسی لطف کنه یه نمونه کوچیک کد رو بنویسه و اینجا بزاره من میتونم از طریق پرسنل شرکت برای تمام تگ ها کاملش کنن و برای استفاده عموم بزارم. موفق و موید باشید

سلام.
متوجه نمیشم. اگر استاندارد رو دارید، دیگه با چه چیزی مشکل دارید؟ نوشتنش که دیگه کاری نداره... اگر استاندارد رو اینجا قرار بدید تا من بتونم فرمت فایل رو ببینم، میتونم یک Code Base ای درست کنم (خیلی ساده!) که فایلهای مزبور رو بخونه... بعد شما توسعه اش بدید... اما این مساله نیازمند اینه که من دقیقا بدونم که این استاندارد به چه شکلی تعریف شده و مثلا، 02517nam در ابتدای فایل به چه معنی هستش...

موفق باشید.

saghari
چهارشنبه 26 اسفند 1388, 02:17 صبح
با سلام مجدد
لینک زیر توضیح در مورد استاندارد داده
http://www.freebooknotes.com/wiki/ISO_2709
خود استاندارد هم 57 دلار قیمتش هست و تو سایت iso فروخته میشه (البته احتمالا نسخه فری اون رو هم میشه پیدا کرد)

http://www.techstreet.com/standards/ISO/2709_2008?product_id=1570313
فکر کنم برای نوشتن کد پایه همون توضیحاتی که در لینک بالا گذاشتم کافی باشه.
همونطور هم که قبلا عرض کردم لیست کامل تگ های استفاده شده در این مارک ایران در کتاب رسا (منتشر شده توسط شرکت پارس آذرخش) وجود داره و من این کتاب رو دارم. (اگر لازم بود هماهنگ کنید تا بدست شما برسونم)
احتمالا اگه نیاز بشه اصل استاندارد رو هم بخریم مشکل خاصی نیست ولی چون بنده امکان خرید مستقیم از اینترنت رو ندارم پروسه خریدش حدود 1 ماه طول میکشه (البته اگه کسی کردیت داشته باشه من میتونم هزینه رو پرداخت کنم تا سریعتر خریداری بشه)

موفق باشید

fumnimda
چهارشنبه 29 اردیبهشت 1389, 12:14 عصر
من هم دنبال تبدیل iso 2709 به فرمتی قابل استفاده از برنامه بودم.
اسکریپتی در آدرس زیر هست که کار تبدیل این استاندارد رو به xml انجام میده.
خروجی که برای من تولید کرد به نظر قابل قبول میاد. نمی دونم برای شما هم کار کنه یا نه.
امتحان کنید بد نیست.
http://contribs.koha.org/extension_view.php?eid=10

panjereh
چهارشنبه 27 بهمن 1389, 20:36 عصر
با سلام

دوستانی که در برنامه نویسی به روش مهندسی معکوس تبحر دارن یا علی!!

فایل زیر داکیومنت (انگلیسی) در رابطه با اکسپورت اطلاعات در فرمت iso-2709 هست به همراه کد C

http://ncsi-net.ncsi.iisc.ernet.in/gsdl/collect/tracol/index/assoc/HASH0146.dir/doc.doc

با استفاده از مهندسی معکوس می شه برنامه دیکودش رو نوشت.
منتظر dll برنامه هستیم
یا علی

javad_r_85
یک شنبه 01 اسفند 1389, 12:55 عصر
سلام...

من هم قبلا به خاطر همین مشکل در تبدیل این فایلهای ایزو پروژم را رها کردم ولی الان دوباره از طرف دانشگامون درخواست این نرم افزار را کردند و هر چی گشتم چیزی برای تبدیل فایل ایزو به اس کیو ال یا اکسس مورد استفاده در برنامم پیدا نکردم دوستان اگر کسی اطلاعاتی داره لطفا کمک کند؟؟؟؟

javad_r_85
یک شنبه 01 اسفند 1389, 21:59 عصر
من فقط تونستم یه کلاس php واسه تبدیل این کدهای پیدا کنم از دوستا ن اگر کسی می تونه کمک کنه تا یه کلاس سی شارپ برای دیکود کردن فایل ایزو بنویسیم ممنون می شم کمک کنند .. راستی می دونستید این برنامه را شرکت پارس آذرخش به کتابخونه ملی با قیمت 6.5 میلیون فروخته امروز تو دانشگاه مسوول کتابخونمون می گفت قیمت این برنامه 5 میلیون تومنه باورم نمی شد




Une classe PHP pour manipuler des enregistrements au format ISO2709

classe iso2709_record (public release 0.0.6)
par François Lemarchand. Bibliothécaire à Agneaux (50). 2002 francois.banholzer@free.fr retour à ma page personnelle
Attention. Cette documentation n'est pas tout à fait terminée. Pour toute précision, n'hésitez pas à m'envoyer un mail. En préambule, je voudrais dédier ce travail à Hervé Le Crosnier. Au début des années 90, j'ai eu la chance de suivre un stage d'initiation à HTML assuré par lui. Il est plus que probable qu'il ne s'en souvienne pas, mais depuis ce stage, quand je mesure le chemin parcouru, je ne peux que dire merci Hervé, un grand MERCI.
La classe PHP dont il est question ici se pose deux objectifs : Dans un premier temps, il s'agit de lire des enregistrements ISO2709 afin de récupérer des informations. Dans un second temps, et pour être complétement efficiente, la classe devrait idéalement nous permettre de constituer de nouveaux enregistrements respectant ce format.
Rappel sur le format ISO2709

Le format d'échange ISO 2709 fournit une norme pour l'échange de données bibliographiques. Il offre une interface unifiée permettant la description d'enregistrements organisés en champs et sous-champs.
Ce format définit pour un enregistrement 3 zones : le guide le répertoire la zone des données Le guide contient des informations sur la nature de l'enregistrement : le type de notice, le genre de document décrit, le statut de la notice, etc. Il contient aussi diverses informations sur la structure ISO 2709 de l'enregistrement : la longueur de l'enregistrement, la position dans l'enregistrement où se trouvent les données, etc. Ce guide est constitué d'une série de 24 caractères qui se décomposent ainsi caractères 0 à 4 : la longueur de l'enregistrement caractère 5 : le statut de la notice bibliographique caractère 6 : le type de document caractère 7 : le type de la notice caractère 8 : le niveau hiérarchique de la notice caractère 9 : non-défini caractère 10 : la longueur des indicateurs (2 en UNIMARC) caractère 11 : la longueur du code de sous-zone (2 en UNIMARC) caractères 12 à 16 : position dans l'enregistrement du début de la zone de données caractère 17 : le niveau de catalogage caractère 18 : la forme du catalogage descriptif caractère 19 : non-défini caractère 20 : le nombre de caractères du répertoire indiquant la longueur d'un champ (4 en UNIMARC) caractère 21 : le nombre de caractères du répertoire indiquant la position d'un champ (5 en UNIMARC) caractère 22 : le "nombre de caractères de la partie relative à l'application de chaque article du répertoire" (Je ne sais pas trop à quoi cela sert, c'est toujours 0 en UNIMARC) caractère 23 : non-défini Le répertoire est une sorte de table des matières de l'enregistrement. Il contient pour chacun des champs de celui-ci le label du champ (sur 3 caractères), le nombre de caractères du champ (sur le nombre de caractères défini par la position 20 du guide) et la position du début du champ dans la zone de données (sur le nombre de caractères défini par la position 21 du guide). Prenons un exemple qui sera peut-être plus parlant. Pour le champ 001 d'un enregistrement qui compte 12 caractères on aura la mention suivante dans le répertoire : 001001200000. On peut décomposer cette mention ainsi : le label est sur trois caractères, c'est 001. La longueur du champ est sur 4 caractères : 0012. Enfin l'adresse du champ est sur 5 caractères : 00000. Celle-ci est fixée à 0 car c'est l'"offset", la position en nombre de caractères par rapport au début de la zone des données (le début de cette zone est défini dans les positions 12 à 16 du label). Pour accéder au contenu de ce champ, nous avons donc toutes les informations requises : sa longueur (second élément de son entrée dans la "table des matières"), son label, et l'endroit où il débute dans l'enregistrement (obtenu par l'addition de la position du début des données indiquée dans le guide et du troisième élément trouvé dans le répertoire). La zone des données contient donc l'ensemble des champs de l'enregistrement mis bout à bout suivant l'ordre défini dans le répertoire. Dans ces champs, des caractères spéciaux sont utilisés pour marquer le début des sous-champs et la fin du champ (ces caractères sont inclus dans la longueur indiquée par le répertoire). Certains champs commencent par des indicateurs définis dans la norme UNIMARC ou autre. La fin de l'enregistrement lui-même est marquée par un caractère spécial. Comme on peut le voir, la structure d'un enregistrement au format ISO 2709 est assez simple une fois que l'on en a compris le principe. La manipulation de tels enregistrements se résume à des opérations élémentaires (décomposition de l'enregistrement, consultation de la "table des matières" pour accéder à un champ, etc.) La difficulté principale reste de maintenir la synchronisation entre les trois zones de l'enregistrement lors de l'insertion ou de la suppression de champs. La classe présentée ici à pour but d'accomplir ces accès et cette synchronisation de manière relativement transparente pour le programmeur.
Propriétés

Comme toute classe PHP, la classe iso2709_record comprend des propriétés qui peuvent être accédées par votre code. Certaines de ces propriétés sont utilisées pour la gestion interne de l'objet défini dans la classe.
propriété type description enregistrement ISO2709 full_record string enregistrement complet guide chaîne portion 'guide' directory chaîne portion 'répertoire' data chaîne portion 'zone de données' tableaux internes inner_guide tableau associatif guide sous forme de tableau associatif
structure:
$this->inner_guide = array(
rl => 'longueur de l'enregistrement (int)',
rs => 'état de la notice (1 car.)',
dt => 'type de document (1 car.)',
bl => 'type de la notice (1 car.)',
hl => 'niveau hiérarchique (1 car.)',
pos9 => 'indéfini. contient un espace',
il => 'longueur indicateurs (int)',
sl => 'longueur code sous-champ (int)',
ba => 'adresse de base des données (int)',
el => 'niveau de catalogage (1 car.)',
ru => 'forme du catal. descriptif (1 car.)',
pos19 => 'indéfini. contient un espace',
dm1 => 'infos pour le répertoires (toujours 4)',
dm2 => 'infos pour le répertoires (toujours 5)',
dm3 => 'infos pour le répertoires (toujours 0)',
pos23 => 'indéfini. contient un espace'
); inner_directory tableau multi-dimensionnel tableau correspondant au répertoire de l'enregistrement
structure:
$this->inner_guide[x] = array(
label => 'label du champ de rang x (string)',
length => 'longueur du champ de rang x',
adress => 'offset du champ dans l'enregistrement'
); inner_data tableau multi-dimensionnel tableau correspondant au répertoire de l'enregistrement
structure:
$this->inner_data[x] = array(
label => 'label du champ de rang x (string)',
content => 'contenu du champ'
); caractères spéciaux record_end chaîne caractère de fin de notice (IS3 de l'ISO 6630) field_end chaîne caractère de fin de champ (IS2 de l'ISO 6630) subfield_begin chaîne caractère de début de sous-champ (IS1 de l'ISO 6630) NSB_begin chaîne caractère débutant un NSB (Non Sorting Block) NSB_end chaîne caractère de fin NSB (Non Sorting Block) note Les propriétés décrivant des caractères spéciaux ont toutes dans cette classe un équivalent préfixé par rgx_ contenant les mêmes caractères sous une forme utilisable dans des expressions régulières compatibles PERL. divers update_mode entier mode de mise à jour de l'enregistrement errors tableau tableau contenant les messages d'erreurs liés au format de l'enregistrement (méthode valid()) ou aux modifications effectuées sur celui-ci.

Dans l'état actuel des choses, la gestion des objets de PHP ne comprend aucune notion de propriétes ou méthodes publiques ou privées. Les propriétés de la classe sont donc toutes accessibles depuis n'importe quel endroit de votre code. Cependant, je ne recommande pas de modifier les propriétés préfixées par inner_ sans bien réfléchir avant. Ces variables sont en effet utilisées de manière interne dans la classe pour la gestion de l'enregistrement. On peut donc les modifier, mais sans garantie quant à la synchronisation de l'ensemble.
Méthodes

Le constructeur : iso2709_record

prototype : iso2709_record([string record], [flag update_mode])
Le constructeur est appelé lors de la création de la classe. Il admet deux paramètres :
Un enregistrement ISO2709 sous la forme d'une chaîne. La chaîne passée en paramètre peut être vide, auquel cas un nouvel enregistrement sera créé. Un drapeau indiquant le mode de mise à jour de l'enregistrement. Ce drapeau peut prendre les valeurs AUTO_UPDATE ou USER_UPDATE, la valeur par défaut étant AUTO_UPDATE. Ce drapeau permet de régler le comportement de la classe lors de l'insertion ou de l'effacement de champs dans l'enregsitrement. Avec la valeur AUTO_UPDATE, les tableaux internes et le contenu des variables de l'enregistrement sont remis à jour à chaque insertion ou suppression, ce qui ralentit celles-ci. A contrario, avec la valeur fixée à USER_UPDATE, le script appelant doit gérer ces mises à jour par l'intermédiaire de la méthode update(). Pour clarifier ceci, on peut considérer que s'il s'agit de lire ou d'ajouter juste quelques champs, on peut laisser la valeur de ce paramètre à AUTO_UPDATE. Par contre, pour la création d'un enregistrement ou de nombreuses modifications, il est grandement préférable de retenir USER_UPDATE. Si cela est le cas, il ne faudra pas omettre l'appel de la méthode update() après les modifications, la gestion des mises à jour internes à la classe étant de la responsabilité du programmeur et non plus de celle-çi. Obtenir le contenu d'un sous-champ ou d'un champ : get_field

prototype : get_subfield(string label [, mixed refs])
La fonction get_subfield retourne le contenu du champ spécifié par le paramètres qui lui sont passés. L'appel de la méthode peut être effectué de différentes manières. Le paramètre label est l'étiquette du champ. Ce peut être une expression régulière (le point est alors un caractère "joker". ex : 7.0 indique les champs 700 et 710).
La valeur retournée par la fonction est un tableau dont la structure est définie par les paramètres passés (ref).
Si le seul paramètre fourni est label, la méthode retourne un tableau dont les éléments sont constitués par les contenus entiers des champs correspondant à label. Si seule une étiquette de sous-champ est fournie en plus du label, le tableau retourné sera comme précédemment un tableau dont les éléments sont constitués par les contenus entiers des champs correspondant à label et à l'étiquette fournie. Si plusieurs étiquettes de sous-champs sont fournies, le tableau retourné sera un tableau multi-dimensionnel dont les éléments sont des tableaux associatifs contenant les valeurs des sous-champs spécifiés.

exemples d'appels valides de get_subfield :
$isbn = $myRecord->get_subfield('010') retourne un tableau constitué par les contenus des champs 010 de l'enregistrement. Les indices de ce tableau sont numériques.
ex. $isbn[0] = 'contenu du premier champ 010'
$isbn[1] = 'contenu du second champ 010'
...

$nom_auteur = $myRecord->get_subfield('7..', a) retourne un tableau constitué par les contenus des sous-champs $a des champs commencant par 7 de l'enregistrement. Les indices de ce tableau sont numériques.
ex. $nom_auteur[0] = 'contenu du sous-champ 700$a'
$nom_auteur[1] = 'contenu du sous-champ 701$a'
...
$nom_auteur[x] = 'contenu du dernier sous-champ 712$a'

$nom_auteur = $myRecord->get_subfield('7..', a, b) retourne un tableau indexé dont les élements sont le contenu des sous-champs $a et $b des champs commencant par 7 de l'enregistrement. Les indices de ce tableau sont numériques et chacun de ses éléments est un tableau associatif.
ex. $nom_auteur[0][a] = 'contenu du sous-champ 700$a'
$nom_auteur[0] = 'contenu du sous-champ 700$b'
$nom_auteur[1][a] = 'contenu du sous-champ 701$a'
...
$nom_auteur[x][a] = 'contenu du dernier sous-champ 712$a'
$nom_auteur[x][b] = 'contenu du dernier sous-champ 712$b'



Avec ceci, on doit en principe pouvoir accéder n'importe quel sous-champ de l'enregistrement. Si vous avez des besoins plus complexes, rien ne vous empêche de 'parser' directement les propriétes de la classe (cf. section propriétés).
[B] Ajout d'un champ : add_field

prototype : add_field(string label, string indicators, mixed field_content)
Cette méthode permet l'ajout d'un champ à un enregistrement ISO2709. On peut l'appeler de différentes manières : le nombre de paramètres est variable. On doit fournir en premier lieu l'étiquette du champ et les éventuels indicateurs, ceux-çi pouvant être de longueur nulle si le champ n'a pas d'indicateurs.
Le passage du contenu du champ se fait par le paramètre field_content sous la forme d'un nombre variable de chaînes comprenant alternativement l'étiquette du sous-champ et le contenu du sous-champ. Si une seule chaîne est fournie, le champ est réputé n'avoir pas d'étiquette de sous-champ et contenir uniquement la chaîne fournie.
La seconde possibilité est de passer le contenu du champ sous la forme d'un tableau multi-dimensionnel dont chaque ligne est un array constitué par l'étiquette du sous-champ et le contenu du sous-champ.
exemples d'appels valides de add_field :
$myRecord->add_field('001', '', '01-0002977') ajoute un champ 001 ayant pour contenu 01-0002977 et ne comprenant pas d'indicateurs. $myRecord->add_field(200, '1 ', a, 'Minable le pingouin', f, 'Texte d'Helen Lester') ajoute un champ 200 ayant un champ $a, un champ $f et dont le premier indicateur est 1. $monChamp[0] = array( a => 'Lester');
$monChamp[1] = array( b => 'Helen');
$myRecord->add_field(700, ' 1', $monChamp); Passage des arguments par un tableau. On insére un champ 700 avec $a et $b avec un indicateur décrivant une entrée au nom de famille.

La méthode add_field() retourne TRUE en cas de succès et FALSE en cas d'échec (mauvais format pour les paramètres). Dans ce dernier cas, un message est ajouté au tableau des erreurs (cf. méthode show_errors).
Suppression d'un champ : delete_field

prototype : delete_field(string label)
La méthode delete_field() est à utiliser pour supprimer un champ de l'enregistrement ISO2709. Son fonctionnement est relativement simple : on passe comme paramètre l'étiquette du champ à supprimer. Il est possible de supprimer plusieurs champs en un seul appel dans la mesure où le paramètre label peut être une expression régulière. En pratique, on peut considérer que le point est un caractère "joker".
exemples d'appels valides de delete_field :
$myRecord->delete_field('001') supprime le ou les champs 001. $myRecord->delete_field('71.') supprime les champs de l'enregistrement dont les labels commencent par 71 (710, 711, 712...). $myRecord->delete_field('..2') supprime les champs de l'enregistrement dont les labels finissent par 2 (012, 022, etc.). (c'est idiot, mais sait-on jamais...)

La méthode delete_field() retourne TRUE en cas de succès et FALSE en cas d'échec (mauvais format pour le label). Dans ce dernier cas, un message est ajouté au tableau des erreurs (cf. méthode show_errors).
Gestion du guide : set_rs, set_dt, set_bl, set_hl, set_el, set_ru

prototypes :
set_rs(string/char value)
set_dt(string/char value)
set_bl(string/char value)
set_hl(string/char value)
set_el(string/char value)
set_ru(string/char value)
Cet ensemble de méthodes permet de positionner les valeurs non calculées du guide de l'enregistrement. Pour connaître le codage des valeurs concernées, je vous invite à vous reporter aux spécifications du format UNIMARC (ou autre).
Nomenclature des fonctions :

fonction position concernée élément description set_rs() 5 record status Etat de la notice set_dt() 6 document type Type de document set_bl() 7 bibliographic level Type de la notice set_hl() 8 hierarchical level Niveau hiérarchique set_el() 17 encoding level Niveau de catalogage set_ru() 18 record update Forme du catalogage descriptif

L'appel de ces méthodes est on ne peut plus simple : on passe le code souhaité comme paramètre unique. Le guide (inner_guide) est modifié. Cependant, la mise à jour de l'enregistrement est toujours gérée suivant les modes USER_UPDATE et AUTO_UPDATE. Si la classe a été déclarée avec le mode USER_UPDATE, la modification ne sera effective qu'après l'appel de la méthode update().
Mise à jour de l'enregistrement : update

prototype : update(void)
Cette méthode n'est à invoquer que si la classe a été créée avec le drapeau update_mode fixé à USER_UPDATE. Si ce n'est pas le cas, l'appel à cette méthode sera effectué à chaque opération d'insertion ou d'effacement effectuée sur l'enregistrement, ce qui rend superflue une mise à jour par le script appelant (cf. le constructeur : iso2709_record).
Le rôle de cette méthode est de synchroniser l'enregistrement courant avec sa représentation interne dans la classe. Les propriétés full_record, guide et directory sont mises à jour à partir du contenu des tableaux inner_data, inner_guide, inner_directory.
Cette méthode ne retourne rien.
Vérification du format de l'enregistrement : valid

prototype : valid(void)
Cette méthode vérifie le format ISO2709 de l'enregistrement. Elle retournera TRUE si l'enregistrement courant est valide et FALSE dans le cas contraire. Attention Cette méthode valide le format ISO2709 uniquement. Aucune erreur de sera générée si votre enregistrement contient, par exemple, 2 champs 700, ce qui est interdit par le standard UNIMARC.
Gestion des caractères accentués et autres : ISO_encode et ISO_decode

prototypes :
ISO_encode(string chaine)
ISO_decode(string chaine)
Ces deux méthodes assurent la conversion des caractères codés suivant le format ISO 5426 vers le format ISO 8859-1.
La fonction ISO_encode convertit le format ISO 8859-1 vers le format ISO 5426 et ISO_decode fait l'inverse.
Ces deux fonctions retournent la chaîne passée en paramètre mais convertie suivant le cas.
De mon point de vue, ces deux méthodes sont implémentées de manière 'partielle mais suffisante', ce qui veut dire que cette implémentation n'est pas complète dans la mesure où j'ai énormément de mal à trouver des informations suffisantes sur le format ISO 5426 et l'ISO 646. Pour l'anecdote, la fonction ISO_decode est adaptée d'un bout de code C posté sur le forum de l'application bien connue recode et la fonction ISO_encode en découle directement. Si des personnes avaient plus de documentation sur le sujet, je leur serais reconnaissant de m'en faire part. L'implémentation actuelle est a peu près satisfaisante pour les langues latines et romanes, mais incomplète pour l'allemand et les alphabets 'exotiques'.
Un cas pratique

Voici un exemple d'utilisation très simple destiné à clarifier un peu tout ça. Il illustre la création d'un enregistrement ISO 2709 minimal. Les commentaires sont dans le script.
<?
// inclusion du fichier de la classe

require('./iso2709.inc');

// on crée un nouvel objet vide

$record = new iso2709_record('', AUTO_UPDATE);

// on crée le champ 100 qui est obligatoire en UNIMARC

$champ = date('Ymd').'d||||||||||||uy0frea03||||ba';

// ce champ est inséré dans l'enregistrement

$record->add_field('100', '', a, champ);

// on ajoute un champ 200

$resp[0] = array(a, "Travailler, moi ? jamais !");
$resp[1] = array(e, "l'abolition du travail");
$resp[2] = array(f, "Bob Black");
$resp[3] = array(g, "traduit de l'anglais par Julius Van Daal");


$record->add_field('200', '1 ', $resp);

// on ajoute un champ 700

$record->add_field(700, ' 1', a, 'Black', b, 'Bob');

// champ 010 : l'ISBN

$record->add_field('010', '', a, '2-84405-000-X');

// champ 210 : adresse bibliographique

$record->add_field(210, '', a, '[s.l]', c, 'L'esprit frappeur', d, '1997');

// c'est fini, vous avez votre enregistrement.
// affichage de l'enregistrement ISO 2709 :

print $record->full_record;

?>

javad_r_85
دوشنبه 02 اسفند 1389, 10:54 صبح
چرا کسی جواب نمی ده ؟؟/ گیرم والله باید زودتر پروژه را تحویل بدم :گریه:

Mahdi_S_T
پنج شنبه 05 اسفند 1389, 07:40 صبح
من هم خیلی بررسی و جستجو کردم ولی به نتیجه ای نرسیدم ، اگه فکر می کنی این کد php جواب میده ، همان را تبدیل به زبان موردنظرت بکن

sajjad_kochekian
یک شنبه 08 اسفند 1389, 21:17 عصر
سلام به همه دوستان
نرم افزار کتابنشناسی ملی کتابخانه ملی ایران اطلاعات یک کتاب را در فایلی با پسوند iso
اکسپرت می کند می خواستم اطلاعات داخل این فایل و ببینم مثل در دیتابیس ذخیره کنم البته وقتی با یه ادیتور مثل notepad بازش می کنم کاراکتر عجیب قریب می ده لطفا کمک کنید
:گیج:


دوستان عزیز سلام
اون کارکتر های عجیب و غریب کاراکتر های اسکی هستند(داس)-که با یک مبدل داس به ویندوز که توی همین تالار وجود می توانید اونها رو تبدیل کنید.

DlphIran
دوشنبه 16 اسفند 1389, 09:51 صبح
سلام
به نظر من بهتره که وقتتون رو تلف نکنید. شرکتی که نرم افزار کتابخانه ملی رو پشتیبانی می کنه فکر می کنم حدود 12 سال هست بطور تخصصی در زمینه نرم افزار کتابداری فعالیت داشته و خیلی حرفه ای عمل کرده بطوری که باید درخواست بانک اطلاعاتی کتابهای کتابخانه ملی رو از اون شرکت ارائه کنید و برای تحویل دادن اطلاعات کامل و قابل استفاده کتابها ، هزینه بالایی رو پرداخت کنید بعد اون اطلاعات رو براساس بانک اطلاعاتی درخواستی شما تحویل میده .
جهت اطلاع ، نرم افزارهای کتابداری گمنامی و آشنایی هست که قیمت اونها تا 18 میلیون تومن در عراق و کشورهای همسایه به فروش رسیده است .

پیشنهاد میکنم از تفکر درباره مهندسی معکوس در جهت تقلب ، کپی برداری غیر مجاز بخاطر مسائل شرعی جدا خودداری کنید.

javad_r_85
دوشنبه 16 اسفند 1389, 12:14 عصر
دوست عزیز جهت اطلاع عرض کنم الان شرکت هایی هستند که نرم افزار کتابخونه را نوشتند مانند شرکت ایلا نرم افزار یا همارا یا فناواران اطلاعا ت وستا و در برنامه آنها نیز می شه از سی دی کتابشناسی ملی که پشتیبانی آن با شرکت پارس آذرخش هست استفاده کرد و در واقع شرکت پارس آذرخش از استاندارد بین الملی یونی مارک مبتنی بر iso 2709 استفاده می کند که البته سایت اصلی اطلاعات را رایگان در اختیار کسی قرار نمی دهد و در ایران نیز یه سری تغییرات روی آن انجام گرفته و تحت عنوان ایران مارک شناخته می شود البته من با دوستانی که ارشد کتابداری دارند تماس گرفتم و اطلاعاتی گرفتم البته ناقص و برای من کافی نبوده و حتی یکی از آنها به من پیشنهاد کردن که در سمیناری که از طرف کتابخانه ملی برای این استاندارد تشکیل می شود شرکت کنم در کل چیز دست نیافنتی نیست البته خیلی سخته و من در تماسی که با شرکتهای مذکور و برنامه نویساش داشتم به من فقط گفتند که چندین ماه روی این استاندارد کار کردند و اونا هم از مهندسی معکوس تونستن به اطلاعات فایل ایزو دست پیدا کنند و هیچ کپی برداری غیر مجاز در کار نیست و آنها برای انحصار کردن محصولاتشان این اطلاعات را در اختیار کسی قرار نمی دهند...

Mahdi_S_T
دوشنبه 16 اسفند 1389, 12:43 عصر
پیشنهاد میکنم از تفکر درباره مهندسی معکوس در جهت تقلب ، کپی برداری غیر مجاز بخاطر مسائل شرعی جدا خودداری کنید.

دوست عزیز ، باید خدمتتان عرض کنم که استاندارد ISO مربوط به کتابخانه ها، ربطی به آن شرکت نداشته و یک استاندارد بین المللی است و یک شرکت نه چندان معروف دیگر هم در برنامه کتابخانه (مبلغ نرم افزار هفتاد هزار تومان )خود تبدیل ایزو کتابشناسی رو گذاشته به این معنی که توانسته تابع مربوط به کانورت اطلاعات را بنویسه.