سؤال

أحاول إنشاء قائمة غير مرتبة من المتغيرات في VAR1 تحدث مرتين ويفر 2 تحدث أوقاتًا لا حصر لها (استخدام حالة في مشروعي مختلف). العنصر لا يسمح لي باستخدام maxoccurs.

هل هناك أي عمل لما أحاول فعله؟

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="testcomment">
    <xs:complexType>
      <xs:all>
        <xs:element name="var1" type="xs:string" maxOccurs="2" />
        <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
هل كانت مفيدة؟

المحلول

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

هل يمكنك نشر الجزء ذي الصلة من XSD الخاص بك؟


تحديث: لا ، لا يمكنك فعل ذلك باستخدام XSD. القواعد حول ما يمكنك وضعه في <xs:all> العنصر مدرج على سبيل المثال هنا. هذا القيد له اسم - UPA ، أو قيود فريدة من نوعها لإسناد الجسيمات. الأمر كله يتعلق بالغموض وموقع Microsoft على موقع جيد لسبب وجوده هنا.

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

نصائح أخرى

صادفت نفس المشكلة وهناك حل! تحقق من هذه الإجابة:

https://stackoverflow.com/a/3827606/637142

<xs:element name="A">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="B"/>
      <xs:element ref="C"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

من السهل الاستخدام ببساطة<xs:choice maxOccurs="unbounded"> بدلاً من <xs:all>. هذا سوف يعطي التأثير الذي تبحث عنه.

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