3

我不认为这是可能的,但我想我会把它扔在那里。鉴于此 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>
4

2 回答 2

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 -->
于 2010-04-13T20:57:44.143 回答
0

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

于 2010-07-10T10:03:23.210 回答