2014-11-01 66 views
-1

好吧,所以我一直在這個工具幾個小時,我仍然無法找出問題是什麼,但這是我到目前爲止。這是來自教師給我們的網站,用於驗證我們的XML,並且從W3學校的驗證服務中,我使用下面的精確xml沒有給出任何錯誤。我的問題是什麼導致了兩個不同的結果,我能做些什麼來使其他驗證服務接受我的代碼。謝謝你的幫助。一個驗證說代碼是好的,另一個說這是無效

而且,這是我從得到錯誤的網站(和一個教師被要求的一個截屏說,代碼是有效的)http://www.xmlvalidation.com/

16: 10 Document root element "listing", must match DOCTYPE root "tv". 
47: 11 The content of element type "listing" must match "(mfr,type,size,hdmi)". 



<?xml version="1.0" encoding="UTF-8" ?> 
<!--DOCTYPE tv SYSTEM "TVs2.dtd"--> 
<!DOCTYPE tv [ 
    <!ELEMENT listing (mfr,type,size,hdmi)> 
    <!ELEMENT tv (mfr,type,size,hdmi)+> 
    <!ELEMENT mfr (#PCDATA)> 
    <!ELEMENT type (#PCDATA)> 
    <!ELEMENT size (#PCDATA)> 
    <!ELEMENT hdmi (#PCDATA)> 

    <!ATTLIST tv class CDATA #REQUIRED> 
    <!ATTLIST tv condition CDATA #REQUIRED> 
]> 

<?xml-stylesheet type="text/css" href="TVs.css"?> 
<listing> 
    <tv class="TV" condition="new"> 
     <mfr>Sony</mfr> 
     <type>LCD</type> 
     <size>40" (39.5" diagonal)</size> 
     <hdmi>4 ports</hdmi>  
    </tv> 
    <tv class="TV" condition="new"> 
     <mfr>Samsung</mfr> 
     <type>LED</type> 
     <size>32"</size> 
     <hdmi>3 ports</hdmi>  
    </tv> 
    <tv class="Monitor" condition="used"> 
     <mfr>Hitachi</mfr> 
     <type>PLASMA</type> 
     <size>60"</size> 
     <hdmi>2 ports</hdmi>   
    </tv> 
    <tv class="Monitor" condition="used"> 
     <mfr>Toshiba</mfr> 
     <type>LED</type> 
     <size>75"</size> 
     <hdmi>3 ports</hdmi>    
    </tv> 
    <tv class="TV" condition="new"> 
     <mfr>LG</mfr> 
     <type>LCD</type> 
     <size>32"</size> 
     <hdmi>3 ports</hdmi>    
    </tv> 
</listing> 

回答

0

下面是更正後的dtd代碼,這裏是我在我的列表聲明中找到的內容,我需要添加tv +以顯示該元素將發生多次,這就是我所缺少的。

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE listing [ 
    <!ELEMENT listing (tv+)> 
    <!ELEMENT tv (mfr,type,size,hdmi)> 
    <!ELEMENT mfr (#PCDATA)> 
    <!ELEMENT type (#PCDATA)> 
    <!ELEMENT size (#PCDATA)> 
    <!ELEMENT hdmi (#PCDATA)> 

    <!ATTLIST tv class CDATA #REQUIRED> 
    <!ATTLIST tv condition CDATA #REQUIRED> 
]> 

<?xml-stylesheet type="text/css" href="TVs.css"?> 
<listing> 
    <tv class="TV" condition="new"> 
     <mfr>Sony</mfr> 
     <type>LCD</type> 
     <size>40" (39.5" diagonal)</size> 
     <hdmi>4 ports</hdmi>  
    </tv> 
... 
</listing> 
1

是什麼原因造成兩種不同的結果

也許,W3Schools的(誰是,在一般情況下,可怕的)沒有提供適當的DTD驗證......但是你沒有指向一個特定的服務或程序存在,因此很難說。

,我可以做,使其他驗證服務接受我的代碼

修正錯誤的東西。他們用相對簡單的英語。


的根元素(<listing>)的名稱需要在文檔類型DOCTYPE之後立即將字匹配,正如錯誤消息指出。

因此,將根元素重命名爲tv或在DOCTYPE之後立即將該單詞更改爲listing


<listing>允許包含mfrtypesize,並且hdmi元素,但是你已經把tv元素存在。

更改允許包含或更改您要放置的內容。

+0

你是在暗示我一直在做這件事(從上午7點開始),我用不同的方式做了什麼。無論出於何種原因,我的POST(http://www.xmlvalidation.com/)中的驗證服務提供了這些錯誤,包括我包含的錯誤或這一錯誤(47:11元素類型「列表」的內容必須與「 (TV,MFR,類型,大小,HDMI)」。)。我花了很多時間來解決這個問題,這就是我在這裏要求別人不要爲我做這件事的原因。 – 2014-11-01 23:31:06

+0

@JohnDziendziel - 你在你的問題中提供的代碼是錯誤的,應該會產生這些錯誤。如果您修復了這些錯誤並仍然收到錯誤,那麼您應該更新問題以包含更正的代碼。 (當我做出我在這個答案中提到的更改時,xmlvalidation.com/表示它是有效的)。 – Quentin 2014-11-02 00:11:49

相關問題