سؤال

لدي XML مع التنسيق التالي.

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
        ....
        ....
        <Child5>Some text about child 5</Child5>
        ....
        ....
        <Childn>Some text about child n</Childn>
    </Parent>
</RootNode>

الآن أريد التحقق من صحة XML ضد XSD.

لكن المشكلة هي الرقم واسم عقدة الأطفال غير ثابتة.

يرجى التحقق من العينات التالية من ملفي

العينة 1: طفلان يحملان اسم Node Name 1 و Child2

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
    </Parent>
</RootNode>

العينة 2: ثلاثة أطفال مع اسم Node Name 4 Child5 ، و Child8

<RootNode>
    <Parent>
        <Child4>Some text about child 4</Child4>
        <Child5>Some text about child 5</Child4>
        <Child8>Some text about child 8</Child8>
    </Parent>
</RootNode>

أريد التحقق من صحة النص داخل العقدة الفرعية (التي تظهر على أنها "بعض النص حول الطفل N") مع قاعدة التالية

القاعدة: XML غير صالح إذا كان لدى أي عقدة طفل - (أطفال الوالدين) طول نص INER أكثر من 256.

وهذا يعني النظر في XML غير صالح إذا كان لدى أي طفل في عقدة "الوالد" نصًا داخليًا لفترة أطول ثم 256 حرفًا

هل هذا ممكن باستخدام التحقق من صحة مخطط XSD؟ هل يمكنك مساعدتي في إنشاء ملف .xsd للتحقق من صحة هذا؟

شكرا مقدما

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

المحلول

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

نصائح أخرى

لا يمكن التحقق من صحة هذا تلقائيًا لأن الحد الأقصى لعدد العقد الفرعية غير معروف. قد تكون قادرًا على الحصول على بعض التحقق اليدوي.

إذا كنت قادرًا على تغيير تنسيق XML هذا ، فيجب عليك ذلك ، لأنه مصمم بشكل سيء (ليس أقله لأنه غير قابل للشفاء ...). يجب أن تطلق النار على شيء أكثر مثل:

<RootNode>
    <Parent>
        <Child num="1">...</Child>
        <Child num="2">...</Child>
    </Parent>
</RootNode>

أو ، إذا كان بإمكان الوالد احتواء أشياء أخرى وكذلك الأطفال ، فإن وجود حاوية للأطفال مفيد:

<RootNode>
    <Parent>
        <OtherStuff/>
        <Children>
            <Child num="1">...</Child>
            <Child num="2">...</Child>
        </Children>
        <MoreStuff/>
    </Parent>
</RootNode>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top