属性值" 001"在启用名称空间时,类型ID必须是NCName

时间:2014-08-12 05:47:51

标签: xml dtd xml-dtd

所以我用我自己的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,所以我猜它的东西很简单,我搜索了一下但是找不到任何容易做/不乐的确定。

1 个答案:

答案 0 :(得分:7)

是的,问题是属性值001。类型ID的属性值必须与XML语法的Name生成匹配,这意味着不允许将数字(和其他一些字符)作为初始字符。

x001id_001等属性值都可以。

参考文献: