好吧所以我已经花了几个小时来处理这个问题,我似乎仍然无法弄清楚问题是什么,但这是我到目前为止所做的。这是来自教师给我们验证我们的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 :(得分:1)
导致两种不同结果的原因
可能W3Schools(一般来说,非常糟糕)没有提供正确的DTD验证......但你没有指出那里的特定服务或程序,所以很难说。
我该怎么做才能让其他验证服务接受我的代码
修正错误。他们用相对简单的英语。
根元素的名称(<listing>
)需要与Doctype中DOCTYPE
后面的单词匹配,就像错误消息所示。
因此,要么将根元素重命名为tv
,要么在DOCTYPE
之后立即将字词更改为listing
。
<listing>
允许包含mfr
,type
,size
和hdmi
元素,但您已将tv
个元素放在那里。
更改允许包含或更改内容的内容。
答案 1 :(得分:1)
您http://validator.w3.org/#validate_by_input优于http://www.xmlvalidation.com/。
W3C是官方网站(是万维网的主要国际标准组织),您的验证器是最好的。
是一张纸条。
答案 2 :(得分: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>