我們已經使用RELAX NG指定和驗證XML消息我們基於Web的API,和我在做一些打掃房間,並開始利用<external>
元素。需要一點點遞推RELAX NG外部引用
在我們的模式中,我們有一個<subscription>
元素,其中包含id和句號等內容,還有一個<account>
。 RELAX NG中的規範相當簡單:
<?xml version="1.0"?>
<element name="subscription" xmlns="http://relaxng.org/ns/structure/1.0">
<element name="id">
<text />
</element>
<zeroOrMore>
<externalRef href="./account.xml" />
</zeroOrMore>
</element>
然後,該模式將被實際消息模式包含在特定請求中。
的問題是,所述<account>
元件也可以具有多個根據請求<subscription>
元件(例如,有時我們正在搜索基於賬戶信息訂閱數據,有時我們將根據被搜索的帳戶信息訂閱數據)。
我想:
<?xml version="1.0"?>
<element name="account" xmlns="http://relaxng.org/ns/structure/1.0">
<element name="id">
<text />
</element>
<zeroOrMore>
<externalRef href="./subscription.xml" />
</zeroOrMore>
</element>
但加載模式時,我得到了(並不意外)錯誤:Detected an externalRef recursion
是否有指定某種遞歸限制的方式 - 某種程度上知道我目前<subscription>
是<account>
一個孩子,所以不應該有<account>
孩子本身?