所以我正在用我自己的 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 验证器运行它时,我收到错误消息“启用命名空间时,类型 ID 的属性值“001”必须是 NCName。”对于每个 id 属性。
我已经弄乱了一段时间,它似乎不允许使用数字,字母也可以,而且它通过时没有任何问题,但是一旦你设置 id="(any numbers)"它就会给我错误。
我是一个完整的 XML NOOB,所以我猜它很简单,我四处搜索但找不到任何确定的东西,这很容易做/undertsand。
最佳答案
是的,问题是属性值 001
。 ID
类型的属性值必须匹配 XML 语法的 Name
生成,这意味着数字(和一些其他字符)不允许作为初始字符。
x001
或 id_001
等属性值都可以。
引用资料:
关于xml - 启用命名空间时,类型 ID 的属性值 "001"必须是 NCName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256989/