سؤال

لا أعتقد أن هذا ممكن ولكني اعتقدت أنني سأرميها هناك. بالنظر إلى هذا XML:

 <people count="3">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

هل من الممكن في XSD إجبار قيمة سمة Count على أن تكون العدد الصحيح للعناصر المحددة (في هذه الحالة ، عنصر الشخص)؟ من الواضح أن المثال أعلاه سيكون صحيحًا ولن يتحقق المثال أدناه:

 <people count="5">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>
هل كانت مفيدة؟

المحلول

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

<xsl:template match="people">
   <xsl:attribute name="count">
      <xsl:value-of select="count(person)"/>
   </xsl:attibute>
   <xsl:apply-templates/>
</xsl:template>

<!-- insert your identity template here -->

نصائح أخرى

يجب أن يوفر المحللون الذين ينفذون مواصفات XSD 1.1 وظيفة تأكيد يمكن استخدامها للتحقق من صحة محتوى XML مقابل عدد العقد الفرعية

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