XML Schema - 子元素有效或不依赖于父元素

时间:2013-03-26 12:21:23

标签: xml xpath xsd

我正在尝试为以下条件编写XML模式:

我有类似HTML的XML。如果“b”标签是“p”,“li”,“cell”等的子节点,则它可以具有子元素“脚注”。它还可以嵌套其他子“b”标​​签。 但如果它是“ht”标签的孩子,则其子树中禁止使用“脚注”。

例如:

<p><b>text<footnote>footnote text</footnote><b>double bold</b>more text</p>

<p><b>text<b>double <footnote>footnote text</footnote> bold</b></p>

有效且

<ht><b>text<footnote>footnote text</footnote><b>double bold</b></ht>

<ht><b>text<b>double <footnote>footnote text</footnote> bold</b> more text</ht>

不是。 我可以覆盖“ht”中的“b”标签,但它可以嵌套“b”,所以我必须设置一个最大深度。我是否可以通过XPath或其他方式禁止在“ht”子树中使用“脚注”?

1 个答案:

答案 0 :(得分:1)

不适用于XSD 1.0。您必须使用不同的模式语言,或使用Schematron扩充XSD 1.0。

XSD 1.1也可以帮助你,因为它现在支持基于XPath的断言;不幸的是,此时XSD 1.1的支持仅限于Xerces(测试版,免费)和Saxon EE(完整版,商业版),并且当然还没有被广泛使用。