我有以下基本的 XML 和 DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE items [
<!ELEMENT items (item*)>
<!ELEMENT item (name, age*)>
<!ATTLIST item id ID #IMPLIED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<items>
<item id="1">
<name>Tom</name>
<age>20</age>
</item>
<item id="2">
<name>mike</name>
<age>20</age>
</item>
<item id="3">
<name>erik</name>
<age>20</age>
</item>
</items>
这验证了我是否将 ATTLIST item id ID
更改为 ATTLIST item id CDATA
,但目前我收到以下错误:
这里的 ID 字段有什么问题?应该如何正确使用?
最佳答案
ID
必须匹配 name
约束,因此需要以“NameStartChar”开头,即不是数字。例如,这将起作用:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE items [
<!ELEMENT items (item*)>
<!ELEMENT item (name, gender, age*)>
<!ATTLIST item id ID #IMPLIED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<items>
<item id="a1">
<name>Tom</name>
<gender>M</gender>
<age>20</age>
</item>
<item id="a2">
<name>Sarah</name>
<gender>F</gender>
<age>20</age>
</item>
</items>
不过,如果您需要,例如,一个自动递增的 ID,只需使用 CDATA
作为类型即可。
关于xml - ID 字段上的 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65080975/