使用XSD验证节点计数

时间:2010-04-13 20:50:33

标签: xsd count nodes

我不认为这是可能的,但我想我会把它扔出去。鉴于此XML:

 <people count="3">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

是否可以在XSD中强制@count属性值为已定义元素的正确计数(在本例中为person元素)?上面的例子显然是正确的,下面的例子不会验证:

 <people count="5">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

2 个答案:

答案 0 :(得分:4)

我很确定XSD无法做到这一点。但是,如果要保证count属性是下面元素的实际数量,则在文档上运行XSLT样式表可以通过设置值来确保为真:

<xsl:template match="people">
   <xsl:attribute name="count">
      <xsl:value-of select="count(person)"/>
   </xsl:attibute>
   <xsl:apply-templates/>
</xsl:template>

<!-- insert your identity template here -->

答案 1 :(得分:0)

实现XSD规范1.1的解析器应提供一个断言函数,可用于根据子节点数验证XML内容