2014-02-19 89 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聲明瞭四個特定元素作爲根元素的兒童,按指定順序的結構,沒有任何重複。