1

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

我有类似 HTML 的 XML。如果“b”标签是“p”、“li”、“cell”等的子元素,它可以有一个子元素“footnote”。它还可以嵌套其他子“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”子树中使用“脚注”吗?

4

1 回答 1

1

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

XSD 1.1 也可以帮助您,因为它现在支持基于 XPath 的断言;不幸的是,目前 XSD 1.1 支持仅限于 Xerces(beta 版,免费)和 Saxon EE(成熟,商业版),而且还没有被广泛使用。

于 2013-03-26T13:33:23.173 回答