如何使用具有特定属性值的元素强制执行架构?

时间:2013-07-02 19:40:40

标签: xml xsd xml-validation

我的XML文档如下:

<Entries>
  <entry key="some string" value="some string"/>
  " "
  " "
  " "
</Entreis>

我需要强制执行一个规则,即其中一个条目元素必须具有值为“Version”的键。架构会是什么样的?

我试过

<xs:element name ="Entries">
  <xs:complexType>
    <xs:sequence minOccurs="1" maxOccurs="1">
      <xs:element name="entry">
        <xs:attribute name="key" fixed="Version" type="xs:string/>
        <xs:attribute name="value" type="xs:string/>
      </xs:element>
    </xs:sequence>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="entry">
        <xs:attribute name="key" type="xs:string/>
        <xs:attribute name="value" type="xs:string/>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
 </xs:element>

但是我收到验证错误,说我不能让序列在复杂类型中出现两次,或者它无效或放错位置。

1 个答案:

答案 0 :(得分:2)

我担心在xsd 1.0中无法完成。您不能在一个地方拥有两个名称相同但结构不同(虽然相似)的元素。

另一方面 - @key="Version"应该表达什么?这些信息不能作为Entries元素的一部分呈现(类似于<Entries version="..">)吗?

相关问题