xml - 启用命名空间时,类型 ID 的属性值 "001"必须是 NCName

标签 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 验证器运行它时,我收到错误消息“启用命名空间时,类型 ID 的属性值“001”必须是 NCName。”对于每个 id 属性。

我已经弄乱了一段时间,它似乎不允许使用数字,字母也可以,而且它通过时没有任何问题,但是一旦你设置 id="(any numbers)"它就会给我错误。

我是一个完整的 XML NOOB,所以我猜它很简单,我四处搜索但找不到任何确定的东西,这很容易做/undertsand。

最佳答案

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

x001id_001 等属性值都可以。

引用资料:

关于xml - 启用命名空间时,类型 ID 的属性值 "001"必须是 NCName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256989/

相关文章:

xml - 在 XML 中使用文档类型

c# - 数组到 XML 的 .NET 序列化。如何为数组类型设置别名?

java - 更改 Edittext 中的值

javascript - nodejs 使用 cheerio 解析 xml 返回空 CDATA

Python:避免使用 LXML 进行 DTD 验证

xml - 无法在 XML 设置中添加架构 (xsd)

java - 我可以从 Java 应用程序填写 PDF 模板吗?如何?

java - ScrollView 中的 2 个元素布局和 ListView

xml - 如何防止 XML::XPath 在处理 XML 文件时获取 DTD?

html - 为什么嵌套的 anchor 标签是非法的?