كيف يمكنني تغيير "مستوى" من التحقق من صحة التي تقدمها مهمة XMLValidate النملة و؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا محاولة استخدام مهمة XMLValidate النملة والتحقق من صحة مستند XML ضد DTD. المشكلة ليست أنه لا يعمل، إلا أنه يعمل بشكل جيد جدا. يحتوي بلدي DTD عنصر XREF مع "linkend" سمة من نوع IDREF. معظم هذه معرفات إشارة خارج الوثيقة الحالية. وبسبب هذا، فشل تصميمي، منذ محلل يشكو من أن ID أن IDREF يتم الرجوع غير موجود. لذلك، هل هناك أي طريقة أستطيع أن التحقق من صحة وثيقة XML بلدي ضد DTD، ولكن تجاهل أخطاء من هذا النوع؟

وهناك عدد قليل من الأشياء التي كنت قد حاولت: تعيين الخيار "متساهلة" على XMLValidate يجعل مهمة تحقق فقط الوثيقة جيدا formedness، وليس انها صلاحية ضد DTD. المهمة XMLValidate في دليل النملة يسرد بعض JAXP وSAX الخيارات التي يمكن أن يحدد ، ولكن لا شيء يبدو للتطبيق.

إليك قانون بلدي:

 <target name="validate">
        <echo message="Validating ${input}"/>
        <xmlvalidate file="${input}" failonerror="yes"
            classname="org.apache.xml.resolver.tools.ResolvingXMLReader">
            <classpath refid="xslt.processor.classpath"/>
        </xmlvalidate>
 </target>

وكما ترون، أنا باستخدام ResolvingXMLReader لحل DTD ضد فهرس للمعرفات العامة. ومع ذلك، وأحصل على نفس السلوك إذا أنا تحديد DTD مباشرة باستخدام عنصر xmlcatalog متداخلة.

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

المحلول

ومشكلتكم مستمد من الفرق بين تفسيرين للDTD: لك، وفي :-) المواصفات و. IDREFs يجب أن تشير إلى هويات في نفس الوثيقة، في حين أن لك الرجوع إلى عناصر عبر الوثائق.

واقتراحي هو خلق نسختك الخاصة من DTD يحدد NMTOKEN بدلا من IDREF لهذه السمة، واستخدامه لإجراء التحقق من الصحة. وهذا يضمن أن محتويات ستكون صالحة القيم أكس الهوية.

نصائح أخرى

ولست متأكدا إذا كان ذلك يساعد، ولكن قد تتمكن من محاولة هذا الحل؟ إنشاء ملف مؤقت، ودمج كل ما تبذلونه من ملفات XML، والقيام التحقق من الصحة.

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