所以我用我自己的DTD创建一个xml文件。
简化的XML如下:
<!DOCTYPE catalog [
<!ELEMENT catalog (product+)>
<!ELEMENT product (title?, price, creation_date?, weight?, color, description?)>
<!ELEMENT creation_date (day, month, year)>
<!ATTLIST product category (art|dinner_set|ovenware) "art">
<!ATTLIST product id ID #REQUIRED>
<!ELEMENT id (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<catalog>
<product category="art" id="001">
<title>1Blue Sculpture</title>
<price>$2000</price>
<creation_date>
<day>11</day>
<month>08</month>
<year>2014</year>
</creation_date>
<weight>257g</weight>
<color>Green</color>
<description>A beutiful Green Sculpture</description>
</product>
当我尝试通过XML Validater运行它时,我得到一个错误&#34;属性值&#34; 001&#34;当启用名称空间时,类型ID必须是NCName。&#34;对于每个id属性。
我已经用它捣乱了一段时间,它似乎不允许数字,字母很好并且没有任何问题,但是只要你设置id =&#34;(任何数字)&# 34;它给了我错误。
我是一个完整的XML NOOB,所以我猜它的东西很简单,我搜索了一下但是找不到任何容易做/不乐的确定。
答案 0 :(得分:7)
是的,问题是属性值001
。类型ID
的属性值必须与XML语法的Name
生成匹配,这意味着不允许将数字(和其他一些字符)作为初始字符。
x001
或id_001
等属性值都可以。
参考文献: