تم تجاهل التحقق من صحة مخطط XML عند تمكين المطابقة على مستوى الجزء؟

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

  •  26-09-2019
  •  | 
  •  

سؤال

من إقامتي مع التحقق من صحة XML والمخطط ، يبدو أنه عندما مطابقة على مستوى الشظايا تم تمكينه ل XmlReader على سبيل المثال ، يتوقف مصدر XML مقابل التحقق من أي شملت المخططات.

ومع ذلك ، لا يمكنني التحقق من ذلك من وثائق MSDN لأنه لا يبدو أنه يصف سلوك مخطط XSD في ضوء مستوى المطابقة. أيضًا إذا افترضت أن هذه المشكلة صحيحة ، لا يمكنني العثور على حل بديل لذلك.

أود أن أعرف كيفية التحقق من صحة XML شظية ضد مخطط XSD.

في حالتي ، أنا أتحقق من صحة ضد XHTML 1 مخطط صارم. من خلال حقيقة انخفاض علامات HTML مثلu003Ccenter style=";text-align:right;direction:rtl"> لا يتم وضع علامة على أنه غير صالح ، وهذا جزء من السبب في أنني أعتقد أن مطابقة الشظية تتجاهل المخطط. أيضًا عندما أستخدم المطابقة على مستوى المستند في نفس السيناريو ، يتم وضع علامة على أخطاء الصلاحية بنجاح.

للحصول على عينة رمز من نوع سيناريو التحقق من الصحة ، أستخدم هذا.

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

المحلول

أعتقد أنني وجدت الجواب في مقالة MSKB هذه الغريب بما فيه الكفاية بعنوان كيفية: التحقق من صحة شظايا XML مقابل مخطط XML في Visual C#.NET ينص الجزء السفلي من المقالة على:

ملاحظة: يتم التحقق من صحة تصريحات النوع فقط والعناصر ذات المستوى الأعلى في مخطط XML مقابل مخطط XML. تعتبر العناصر الفرعية محلية وبالتالي لا يمكن التحقق منها. من أجل التحقق من صحة العنصر الفرعي ، أعلن عن عنصر المستوى الأعلى والإشارة إلى ذلك.

أعتقد أن هناك خطأ في تلك الفقرة والنية top-level elements in the XMLschema document/fragment are validated against an XML Schema

نظرًا لأن عينة Microsoft Code تبدأ شظتها في المستوى الأعلى (بدلاً من مستند تعسفي) ، فإنها تعمل مع التحقق من الصحة. ومع ذلك ، في حالتي ، آخذ بنية متوسطة الوثيقة.

صححني إذا كان تفسيري خاطئًا.


الحل/الحل

الحل البديل هو بالنسبة لي أن أتعامل مع شظايتي داخل عنصر المستوى العلوي لغرض التحقق من الصحة.

بمعنى آخر ، إذا كنت أتعامل مع جزء XHTML:

<div>MY FRAGMENT</div>

يمكنني لفه للتحقق من صحة يتوافق مع مخطط XHTML الصارم مثل:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML fragment enclosed, conforming to XHTML 1.0 Strict Template.</title>
</head>
<body>

    <div>MY FRAGMENT</div>

</body>
</html>

هذا الحل يعمل بالنسبة لي لذا سأستخدمه في غضون ذلك ؛ سواء كان هناك حل أفضل أم لا ، فأنا غير متأكد بعد.

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