0

我有简单的 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>
] 
>

有什么问题?

4

2 回答 2

1

XML 解析器是否执行验证取决于您如何调用它。很有可能(并且很常见)有一个 DTD,但仍然不做验证。您需要指出您正在使用什么解析器以及如何调用它。

于 2013-02-26T22:06:00.563 回答
0

如果您尝试使用 DTD 来限制在浏览器中查看 XML 文件时显示的元素,那不是 DTD 的用途,而且它不会起作用。DTD 用于文档的基本验证。

您可以使用 XML 样式表或(最好)XSLT 来转换 XML 以进行显示。

于 2013-02-26T22:44:14.060 回答