2013-02-26 91 views
0

我有簡單的xml文檔。但我也需要使用DTD文件。 但是,當我添加或不添加 - 它不會改變。文件不會影響我的XML頁面。dtd文件不影響xml文件

<?xml version="1.0"?> 
<?xml-stylesheet type="text/css" href="stylesheet.css"?> 
<!DOCTYPE software SYSTEM "software.dtd"> 
<software> 
<application> 
    <suite> 
     <office> 
      <app> 
       <title>Microsoft Office</title> 
       <developer>Microsoft</developer> 
       <os>Microsoft Windows</os> 
       <license>Trialware</license> 
      </app> 
      <app> 
       <title>iWork</title> 
       <developer>Apple</developer> 
       <os>Mac OS</os> 
       <license>Proprietary</license> 
      </app> 
      <app> 
       <title>Open Office</title> 
       <developer>StarOffice,OpenOffice.org,Apache OpenOffice</developer> 
       <os>Linux, Mac OS, Microsoft Windows</os> 
       <license>LGPL,Apache License</license> 
      </app> 
     </office> 
    </suite> 
</application> 

在這裏,我的.dtd文件

<!DOCTYPE software 
[ 
<!ELEMENT software(application)> 
<!ELEMENT application(suite)> 
<!ELEMENT suite(office)> 
<!ELEMENT office(app)> 
<!ELEMENT app(title,developer,os,license)> 
<!ELEMENT title(#PCDATA)> 
<!ELEMENT developer(#PCDATA)> 
<!ELEMENT os(#PCDATA)> 
<!ELEMENT license(#PCDATA)> 
] 
> 

當我將其更改爲某事像這樣 - XML頁面仍顯示一切正常。

<!DOCTYPE software 
[ 
<!ELEMENT look ANY> 
] 
> 

什麼問題?

+0

DTD文件與XML文件位於相同的路徑嗎? – machineghost 2013-02-26 20:56:00

+0

在同一個目錄中 – lapots 2013-02-26 21:27:15

+0

你需要解釋一點:「目錄」不是一個標準的文件系統術語,所以可能你正在使用一些XML程序。正如Michael Key指出的那樣,在不知道哪個程序是這樣的情況下回答這個問題是不可能的,因爲XML文件通常不會僅僅因爲你給了他們一個DTD而自我驗證;通常你必須告訴你的程序以某種方式進行驗證。 – machineghost 2013-02-26 22:34:17

回答

1

XML解析器是否執行驗證取決於您如何調用它。擁有DTD並且仍然不需要驗證是很有可能的(也是常見的)。你需要指出你正在使用的解析器以及你如何調用它。

0

如果您嘗試使用DTD限制在瀏覽器中查看XML文件時顯示的元素,那麼這不是DTD的用處,也不適用。 DTD用於文檔的基本驗證。

您可以使用XML樣式表或(最好是)XSLT來轉換XML以進行顯示。