Эквивалент XSD Assert в версии 1.0

Я был очень взволнован, когда обнаружил возможность утверждения XML/XSD, а затем заметил, что это версия 1.1, которую, к сожалению, мы не можем использовать.

Есть ли способ достижения утверждений с 1.0?

Например, мы бы хотели, чтобы ограничение XSD ограничивалось значениями, указанными в отдельном элементе в документе XML, а не в схеме XSD.

С простым ограничением это может выглядеть так:

  <xs:element name="recordset">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="record" type="record" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="record">
    <xs:sequence>
      <xs:element name="tag" type="recordTag" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="recordTag">
    <xs:restriction base="xs:string">
      <xs:enumeration value="tag1" />
      <xs:enumeration value="tag2" />
      <xs:enumeration value="tag3" />
    </xs:restriction>
  </xs:simpleType>

Нам бы хотелось, чтобы ограничения тегов были указаны в XML, и эти утверждения представляли собой способ проверки этих значений. Учитывая приведенное ниже изменение, элемент xs:assert мог бы войти в тип набора записей, сравнивая содержимое тега из записи с содержимым tagDefinitions.

  <xs:element name="recordset">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="tags" type="tagDefinitions" minOccurs="1" maxOccurs="1" />
        <xs:element name="record" type="record" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="record">
    <xs:sequence>
      <xs:element name="tag" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="tagDefinitions">
    <xs:sequence>
      <xs:element name="tag" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

Это все еще возможно в XML 1.0?

0 ответов

Другие вопросы по тегам