تفسير قاعدة لتطبيق استفسارات XPath متعددة على مستندات XML متعددة

StackOverflow https://stackoverflow.com/questions/2477898

سؤال

أحتاج إلى إنشاء مكون سيستغرق بعض مستندات XML في الإدخال والتحقق من النوع التالي من القواعد:

XML1:/bookstore/book[price>35.00] != null 
and (XML2:/city/name = 'Montreal'
     or XML3://customer[@language] contains 'en')

في الأساس ، يجب أن يكون المكون الخاص بي قادرًا على:

  • استبدل رموز XML مع وثيقة XML المقابلة (قبل القولون)
  • تطبيق استعلام XPath على مستند XML هذا
  • تحقق من إخراج XPath مقابل النتيجة المتوقعة ("=" ، "! =" ، "يحتوي على")
  • اتبع بناء الجملة الأساسي ("و" أو "أو" وأقواس)
  • أخبر ما إذا كانت القاعدة صحيحة أم خاطئة

هل تعرف أي مكتبة يمكن أن تساعدني؟ ربما جافاك؟

شكرًا

هل كانت مفيدة؟

المحلول 2

أشارني شخص ما في قائمة بريد Javacc إلى الاتجاه الصحيح ، مع ذكر مخطط. قادني إلى probatron الذي يبدو أنه أفضل تطبيق Java متاح.

يدعي موقع Schematron Web أن اللغة تدعم "القفز عبر الروابط وبين مستندات XML للتحقق من القيود" ولكن يبدو أن Probatron لا يسمح بذلك. قد لا أقوم بتعديلها أو العثور على خدعة لذلك (مثل بناء مستند XML مؤقت يحتوي على جميع مستندات المصدر الخاصة بي). بصرف النظر عن ذلك ، يبدو أن Probatron هي المكتبة الصحيحة بالنسبة لي.

نصائح أخرى

لتقييم XPaths أوصي جاكسن.

جاكسن هي مكتبة XPath مفتوحة المصدر مكتوبة في Java. إنه قابل للتكيف مع العديد من نماذج الكائنات المختلفة ، بما في ذلك DOM و XOM و DOM4J و JDOM. هل من الممكن أيضًا كتابة المحولات التي تعامل الأشجار غير XML مثل رمز بايت Java أو حبوب Java مثل XML ، مما يتيح لك الاستعلام عن هذه الأشجار باستخدام XPath أيضًا.

ال Java XPath API (Java 5 / javax.xml.xpath) هو أيضًا خيار ، لكنني لم أجربه بعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top