您可以在XML Schema属性名称中使用模式吗?

时间:2012-12-04 10:20:42

标签: xml schema

这是一个XML示例:

<Search ID="Blah"
        input="Some search"
        line1="first line of result"
        line2="second line of result"
        line3="third line of result"
        />

名为line1到line3的属性是可选的并且是未绑定的 - 给定的搜索元素可以具有直到line99或某物的线属性(实际上从不高于2位)。有没有办法在XML Schema中指定可接受属性名称的模式,以便我可以验证这一点,而无需手动指定所有可选属性名称,直到我实际使用的任何名称?

理想情况下,我想要的是:

<xs:attribute name="line[0-9][0-9]" type="xs:string" use="optional" />

在架构定义中。

我怀疑这是不可能的,但我尝试找出的所有搜索肯定最终会找到在属性的实际值上使用模式的方法,而不是他们的名字,所以如果有人可以请确认是否这是可能与否,这将是伟大的。

1 个答案:

答案 0 :(得分:1)

不,那是不可能的。如果您在attribute declarations上阅读了XML规范,您会发现属性名称的类型为NCName,排除了[]个字符。

另一方面,使用属性来传达查询结果是非常奇怪的。更自然的格式是

<search id="..." input="...">
    <result>
       <line nr="1">bla bla</line>
       <line nr="2">more bla bla</line>
       ...
       <line nr="99">extra bla</line>
    </result>
</search>