2013-02-26 98 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以进行显示。