2014-02-19 85 views
0

我有一个XML文件,CSS文件和DTD文件。我期望当我对dtd文件的引用无效时,即将xzz添加到名称中,如下面的xml文件所示,当我尝试在Google Chrome中打开时会引发错误。我没有得到一个错误?如果我编辑dtd文件并将文本zzz添加到单词Body(如图所示),则同样适用 - 打开xml文件时它应该给我一个错误。我错过了什么吗?所有文件都在同一个目录中。该CSS文件的作品完美。参考外部DTD文件

XML文件

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<?xml-stylesheet type="text/css" href="Style.css"?> 
<!DOCTYPE Main SYSTEM "Definitionzzz.dtd"> 
<Main xmlns:html="http://www.w3.org/1999/xhtml"> 
<Heading> 
Important text 
</Heading> 
<Newline></Newline> 
<Body> 
Important text 
</Body> 
<Newline></Newline> 
<Heading> 
Important text 
</Heading> 
<Newline></Newline> 
<Body> 
Important text 
</Body> 
<Newline></Newline> 
</Main> 

DTD文件

<!--DTD syntax--> 
<!DOCTYPE Main 
[ 
<!ELEMENT Main (Heading,Body,Newline,Bullet)> 
<!ELEMENT Heading (#PCDATA)> 
<!ELEMENT Bodyzzz (#PCDATA)> 
<!ELEMENT Newline (#PCDATA)> 
<!ELEMENT Bullet (#PCDATA)> 
]> 

CSS文件

/* CSS For headings */ 
Main 
{ 
    border-radius: 5px; 
    padding: 0; 
    margin: 0; 
    position: absolute; 
    top: 15px; 
    left: 15px; 
    right: 15px; 
    bottom: 15px; 
    overflow: auto; 
} 
Heading 
{ 
    color: #000000; 
    font-size: 20pt; 
    text-align: center; 
    margin-left:15px; 
    text-decoration:underline; 
} 
/* CSS For Body */ 
Body 
{ 
    color: #000000; 
    font-size: 10pt; 

} 
/* CSS For Bullets */ 
Bullet 
{ 
    color: #000000; 
    font-size: 15pt; 
    list-style-type: bullet; 
    left: 30px; 
    margin-left:30px; 
} 
/* CSS For Making a new line */ 
Newline 
{ 
    display:block 
} 
/* CSS For Weblinks */ 
a:link:after, a:visited:after 
{ 
content:attr(href); /*displays the actual URL*/ 
font-size:20pt; 
display:block; /*show URLs on a separate line*/ 
} 

回答

2

Web浏览器不做标记VA除了检查XML是否是well-formed(即它完全是XML)之外。他们甚至不读DTD。

要验证XML文档,你需要一个XML验证。一种笨拙的可能性是W3C Markup Validator。尽管它在很多方面都是面向HTML的,但它有一个SGML和XML验证器作为基础,并且您可以在XML文档中使用它。您需要将DTD放在Web服务器上,以便它可以通过URL引用,或将其包含在XML文档中。请注意,外部DTD文件不应包含声明的<!DOCTYPE Main [...]>包装,因为它只属于DTD嵌入到XML文档中的情况,例如,

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<?xml-stylesheet type="text/css" href="Style.css"?> 
<!DOCTYPE Main 
[ 
<!ELEMENT Main (Heading,Body,Newline,Bullet)> 
<!ELEMENT Heading (#PCDATA)> 
<!ELEMENT Bodyzzz (#PCDATA)> 
<!ELEMENT Newline (#PCDATA)> 
<!ELEMENT Bullet (#PCDATA)> 
]> 
<Main xmlns:html="http://www.w3.org/1999/xhtml"> 
... 

顺便说一句,即使没有zzz,该文件是无效的 - 你的DTD声明了四个特定元素作为根元素的儿童,按指定顺序的结构,没有任何重复。