هذا هو الأمر DtdToHaskell الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
DtdToHaskell - مترجم XML DTD إلى Haskell
موجز
dtdToHaskell [ com.dtdfile [ ملف ]]
وسيطات الملف أو الشرطات المفقودة (-) تشير إلى الإدخال أو الإخراج القياسي على التوالي.
الوصف
DtdToHaskell هي أداة لترجمة أي XML DTD صالح إلى أنواع Haskell المكافئة.
يتيح لك ذلك إنشاء المستندات وتحريرها وتحويلها كقيم مكتوبة عادية بتنسيق
البرامج ، وقراءتها وكتابتها كمستندات XML يمكن للبشر قراءتها. يستخدم
فئة Text.XML.HaXml.XmlContent كإطار عمل للطباعة والتحليل.
dtdToHaskell يقرأ ويوزع DTD من com.dtdfile (والتي قد تكون إما مجرد DTD أو ملف
وثيقة XML كاملة تحتوي على DTD داخلي). يولد إلى ملف وحدة هاسكل
تحتوي على مجموعة من تعريفات النوع بالإضافة إلى بعض إعلانات مثيل الفئة للإدخال / الإخراج.
من أجل استخدام الوحدة الناتجة ، تحتاج إلى استيرادها ، وكذلك استيرادها
Text.XML.HaXml.XmlContent. لقراءة وكتابة ملفات XML كقيم للأنواع المعلنة ،
استخدم بعض وظائف الراحة من XmlContent.
ستحتاج إلى دراسة إقرارات النوع المُنشأة تلقائيًا لكتابة إقراراتك الخاصة
باستخدامها - ولكن معظم الأشياء لها أوجه تشابه واضحة مع بنية DTD.
القيود
يحتوي Haskell الذي تم إنشاؤه على مراجع لأنواع مثل OneOf3 حيث يوجد خيار
بين n (في هذه الحالة 3) علامات مختلفة. حاليًا ، الوحدة النمطية Text.XML.HaXml.OneOfN
يحدد هذه الأنواع حتى ن = 20. إذا كان DTD الخاص بك يتطلب خيارات أكبر ، فاستخدم الأداة
مكونوف لتوليد الحجم الإضافي أو نطاق الأحجام التي تحتاجها.
نقوم بخلط أسماء العلامات وأسماء السمات للتأكد من أنها تحتوي على الصيغة المعجمية الصحيحة
في هاسكل ، ولكن هذا يعني (على سبيل المثال) أنه لا يمكننا التمييز بين Myname و myname ،
وهي أسماء مختلفة في XML ولكنها تترجم إلى أنواع متداخلة في Haskell (وبالتالي
ربما لن يتم تجميعها).
تُترجم أسماء السمات إلى حقول مسماة: لكن لأن Haskell لا تسمح باختلاف
أنواع لها نفس الحقل المسمى ، وهذا يعني أن مستند XML الخاص بك الذي يستخدم نفس الاسم
لسمات مماثلة على علامات مختلفة سوف تتعطل وتحترق. لقد أصلحنا هذا بواسطة
دمج الاسم في الحقل المحدد بالإضافة إلى اسم السمة ، على سبيل المثال
tagAttr بدلاً من attr. أقبح ، لكن أكثر قابلية للحمل.
مساحات أسماء XML. حاليًا ، نقوم فقط بربط معرف مساحة الاسم في أي اسم علامة
الذي يستخدمه. ربما تكون الطريقة الصحيحة للقيام بذلك هي اعتبار مساحة الاسم منفصلة
المستوردة، ومن ثم ترجمة بادئة مساحة الاسم إلى مؤهل الوحدة النمطية. يفعل
هذا الصوت عن الحق؟ (لم يتم تنفيذه بعد).
مجموعة فرعية خارجية منذ الإصدار 1.00 من HaXml ، ندعم المجموعة الفرعية الخارجية لـ XML DTD. هذا
يعني أنه يمكننا قراءة مجموعة كاملة من الملفات وتحليلها كجزء من DTD نفسه ، ونحن نحترمها
تضمين وتجاهل الأقسام الشرطية. يجب أن تكون ملفات DTD الفرعية متاحة محليًا - نحن
لا تبحث عنها على الويب.
هناك بعض الأجزاء الهامشية من DTD لسنا متأكدين تمامًا منها ، مثل Tokenised
أنواع وأنواع الترميز. على وجه الخصوص ، لا يوجد التحقق من صحة هذه الخارجية
مراجع. إذا وجدت مشكلة ، راسلنا عبر البريد الإلكتروني:
Malcolm.Wallace@cs.york.ac.uk
حقوق الطبع والنشر
تمت كتابة مكتبة وأدوات HaXml بواسطة وهي حقوق نشر لها
حقوق النشر © 1998 - 2006 مالكولم والاس وكولين رونسيمان
تتضمن المكتبة الوحدة النمطية Text.ParserCombinators.HuttonMeijerWallace
حقوق النشر © 1996 Graham Hutton and Erik Meijer
مع التعديلات
حقوق النشر © 1998 - 2000 مالكولم والاس
ويمكن أيضًا استخدام أو دمج الوحدة النمطية Text.PrettyPrint.HughesPJ
حقوق النشر © 1996 - 1997 John Hughes و Simon Peyton Jones
مكتبة HaXml مُرخصة بموجب شروط رخصة جنو العمومية الصغرى
(LGPL) ، مع الاستثناء الخاص التالي:
كتخفيف للبند 6 من LGPL ، يعطي أصحاب حقوق الطبع والنشر لهذه المكتبة
إذن لاستخدام رمز كائن ثنائي فقط ونسخه وربطه وتعديله وتوزيعه
نسخ من ملف تنفيذي مرتبط بالمكتبة ، دون الحاجة إلى توفير
أي آلية لتعديل أو استبدال المكتبة وإعادة الربط (البنود 6 أ ، 6 ب ، 6 ج ، 6 د ،
6 هـ) ، بشرط الالتزام بجميع الشروط الأخرى للبند 6.
أدوات HaXml Xtract و Validate و DtdToHaskell و MkOneOf ، مرخصة بموجب الشروط
رخصة جنو العمومية (GPL).
يتم توزيع هذه المكتبة ومجموعة الأدوات على أمل أن تكون مفيدة ، ولكن بدون
أي ضمان ؛ حتى بدون الضمان الضمني لقابلية التسويق أو الملاءمة من أجل أ
غرض معين. راجع تراخيص GNU لمزيد من التفاصيل.
استخدم DtdToHaskell عبر الإنترنت باستخدام خدمات onworks.net