我不认为这是可能的,但我想我会把它扔出去。鉴于此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>
答案 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内容