2013-03-26 78 views
1

我正在嘗試爲以下條件編寫XML模式: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

不適用於XSD 1.0。您必須使用不同的模式語言,或者使用Schematron擴充您的XSD 1.0。

XSD 1.1也可以幫助你,因爲它現在支持基於XPath的斷言;不幸的是,目前XSD 1.1支持僅限於Xerces(beta,免費版)和Saxon EE(全面發佈,商業版),並且目前尚未廣泛使用。