XSD在1.0版中断言等效

时间:2015-03-04 10:17:07

标签: xml xsd xsd-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 个答案:

没有答案