2013-04-15 120 views

回答

1

從技術上講,我認爲你會遇到DTD無法識別引用模式的屬性(名稱空間聲明和模式位置)的問題。

但是,我認爲這取決於您如何驗證您的XML以及是否可以忽略用於驗證的DTD,如果指定了架構。

此外,爲了您的任務,您確定您必須從同一個XML實例中引用兩者嗎?也許你可以有2個版本的XML;一個引用DTD和一個引用模式的引用?


這裏是另外兩個可能的選項...

聲明的架構屬性:

<!DOCTYPE doc [ 
<!ELEMENT doc (test)> 
<!ATTLIST doc 
      xmlns:xsi CDATA #IMPLIED 
      xsi:noNamespaceSchemaLocation CDATA #IMPLIED> 
<!ELEMENT test (#PCDATA)> 
]> 
<doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="test.xsd"> 
    <test>Test Doc</test> 
</doc> 

使用處理指令引用的模式:

<!DOCTYPE doc [ 
<!ELEMENT doc (test)> 
<!ELEMENT test (#PCDATA)> 
]> 
<?xml-model href="test.xsl"?> 
<doc> 
    <test>Test Doc</test> 
</doc> 
+0

是的,我想我可以複製XML文件,併爲模式部分使用單獨的文件。 – CodyBugstein

+0

DTD中可以包含名稱空間聲明(如果不填寫,則在通過DTD驗證程序運行時XHTML文檔無效...例如*缺少元素html的xmlns屬性,值應該是:'http://www.w3.org/1999/xhtml'*)。將模式鏈接到XML文檔的處理指令是PI,因此在驗證期間不予考慮。 – Quentin

+0

http://www.w3.org/TR/xml-model/#d0e676 – Quentin

1

XML文檔指定它是否遵循DTD和Schema是否合法?

不會在兩個相沖突彼此?

只有當他們中的一個強制要求另一個禁止時(在這種情況下聲稱遵循這兩者將是一件奇怪的事情)。

+0

我的意思是「它們不會衝突」是不是XML文檔中聲明它是模式實例與DTD下其定義衝突的語句? – CodyBugstein

+0

不,爲什麼呢? – Quentin

相關問題