HaXml
HaXml عبارة عن مجموعة من الأدوات المساعدة لتحليل وتصفية وتحويل وإنشاء مستندات لغة الترميز القابلة للتوسيع ( XML ) باستخدام لغة البرمجة Haskell . [ 2 ]
ملخص
تتضمن أدوات HaXml ما يلي: [ 2 ] [ 3 ]
- محلل XML
- مدقق XML
- محلل منفصل لتصحيح الأخطاء في لغة HTML
- أدوات تنسيق XML و HTML
- محلل تدفق لأحداث XML
- مترجم من DTD إلى Haskell
- مترجم من تعريفات مخطط XML إلى أنواع بيانات Haskell
توفر مكتبة HaXml مجموعة من الدوال عالية المستوى لمعالجة مستندات XML بعد تمثيلها باستخدام أنواع بيانات Haskell الأصلية . [ 4 ] نوع البيانات الأساسي هو Contentالذي يمثل مجموعة فرعية من مستندات XML. [ 5 ]
تتيح مكتبة HaXml تحويل بيانات XML إلى بيانات Haskell والعكس، وتحويل XML إلى XML (عن طريق التحويل أو التصفية ). يتضمن الاستخدام الشائع لمحلل HaXml تحديد طريقة استعراض بيانات XML، وهي من CFilterالنوع ( مرشح المحتوى )، حيث type CFilter = Content -> [Content]. هذا يعني أن هذه الدالة التي يُحددها المستخدم ستأخذ جزءًا من بيانات XML، وتعيد إما أجزاءً إضافية أو لا تعيد أي أجزاء على الإطلاق. يتيح هذا الأسلوب اختيار عناصر XML التي تُحقق شروطًا معينة (مثل الوسوم ذات اسم معين أو جميع العناصر الفرعية لوسم مُحدد). [ 6 ] [ 7 ]
مثال
في الفصل 22 "مثال موسع: برمجة عميل الويب" من كتاب " هاسكل في العالم الحقيقي " لبريان أوسوليفان ودون ستيوارت وجون غورزن، يُناقش المثال التالي. [ 6 ] يبدو ملف XML كما يلي (نسخة مبسطة):
<?xml version="1.0" encoding="UTF-8"?> < rss xmlns:itunes= "http://www.itunes.com/DTDs/Podcast-1.0.dtd" version= "2.0" > <channel> <title> Haskell Radio </title> <link> http://www.example.com/radio/ </link> <description> وصف هذه الحلقة </description> <item> العنصر الأول </item> <item> العنصر الثاني </item> </channel> </rss>تم إنشاء فلتر المحتوى التالي:
channel :: CFilter channel = tag "rss" /> tag "channel"يُستخدم هذا الفلتر لاحقًا للحصول على عنوان القناة:
getTitle :: Content -> String getTitle doc = contentToStringDefault "Untitled Podcast" ( channel /> tag "title" /> txt $ doc )مراجع
- ↑ "الإصدار v1.25.13" . GitHub . تم الاطلاع عليه في 10 يناير 2024 .
- 1 2 غايدا، ميخال ج.؛ كريلوف، ديمتري (5 نوفمبر 2020). "أدوات XML/HTML سريعة للغة هاسكل: XML TypeLift وXeno المحسّن". Zenodo . arXiv : 2011.03536v1 . doi : 10.5281/zenodo.3929549 . S2CID 226282051 .
- ↑ "اقرأني" . جيت هاب . تم الاطلاع عليه في 10 يناير 2024 .
- ^ مو، شين تشينغ؛ هو، تشنجيانغ؛ تاكيشي، ماساتو. ثنائي الاتجاه HaXML (PDF) (أبلغ عن). مؤرشفة من الأصلي (PDF) في 10 يناير 2024 . تم الاسترجاع في 10 يناير 2024 .
- ↑ أولندورف، مانويل (6 يناير 2007). دليل استخدام مجموعة أدوات هاسكل XML مع أمثلة لمعالجة مستندات RDF (ملف PDF) . قسم علوم الحاسوب، جامعة fhwedel. ص 78. مؤرشف (ملف PDF) من الأصل في 13 يناير 2024. تم الاطلاع عليه في 13 يناير 2024 .
- 1 2 أوسوليفان، برايان؛ جورزن، جون؛ ستيوارت، دون (2008). "الفصل 22. مثال موسع: برمجة عميل الويب" . هاسكل في العالم الحقيقي . أورايلي ميديا . ISBN 978-0596514983.
- ↑ والاس، مالكولم؛ رونسيمان، كولين (1 سبتمبر 1999). "هاسكل وXML: مُركِّبات عامة أم ترجمة قائمة على النوع؟" (ملف PDF) . إشعارات ACM SIGPLAN . 34 (9): 148-159 . doi : 10.1145/317765.317794 .
روابط خارجية
- برنامج مجاني مكتوب بلغة هاسكل
- محللات XML
- برنامج يستخدم رخصة جنو العمومية الصغرى
