XSD元素名称模式匹配

时间:2014-08-29 12:50:38

标签: xml xsd

我正在尝试制作一个XSD来验证我从Web服务中获取的一些XML。它看起来像这样:

<values>
    <value_1>asdf</value_1>
    <value_2>asdf</value_2>
    <value_3>asdf</value_3>
    <value_4>asdf</value_4>
    <value_5>asdf</value_5>
</values>

内部值节点的数量是无限制的,但它们始终以_ + number后缀结尾。是否可以编写一个验证节点名称本身的XSD?

2 个答案:

答案 0 :(得分:2)

XSD 1.1解决方案

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="values">
    <xs:complexType>
        <xs:sequence>
            <xs:any maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:assert test="every $e in * 
                         satisfies matches(local-name($e), 'value_[0-9]+')"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

答案 1 :(得分:0)

XSD 1.0无法实现。必须始终明确列出元素。