2010-11-02 31 views
0

從DTD考慮下面的定義來定義:需要的屬性來當且僅當一個子元素中不會出現在DTD元素

<!ELEMENT application (calculator)?> 
<!ATTLIST application 
     uri CDATA #REQUIRED 
> 

我的問題是,我想uri屬性是定義當且僅當沒有calculator元素。

有沒有辦法要求這個?

+2

即使使用XSchema,我也不認爲這是可行的,因爲歧義。您顯示聲明都是可選的,並運行第二步驗證(即XSLT) – 2010-11-02 22:51:58

+1

@Ajjandro:+1。這種東西超出了DTD的能力。 – skaffman 2010-11-02 23:18:16

回答

2

@Alejandro是對的。這對於DTD來說是不可能的,對於XML Schema也是不可能的。您可以使用與RelaxNG架構共現約束來執行此操作,或者您可以將Schematron與任何這些架構語言一起使用。

我已經解決了像這樣的問題,通過使用嵌入式schematron規則和模式(在XFront上使用XSD和使用RelaxNG在XML.com上進行了很好的討論)。我最近在純RelaxNG中做了類似的事情,但是你有一個只能以這種形式表達的模式。

相關問題