我正在尝试为以下条件编写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”子树中使用“脚注”?
答案 0 :(得分:1)
不适用于XSD 1.0。您必须使用不同的模式语言,或使用Schematron扩充XSD 1.0。
XSD 1.1也可以帮助你,因为它现在支持基于XPath的断言;不幸的是,此时XSD 1.1的支持仅限于Xerces(测试版,免费)和Saxon EE(完整版,商业版),并且当然还没有被广泛使用。