我在DTD验证下获得了一个简单的XML文档,其结构如下:
people.xml
<?xml version='1.0' encoding='ISO-8859-15' ?>
<!DOCTYPE people SYSTEM "people.dtd">
<people>
<person dni="1234345F" >
<name>pepe</name>
Description for pepe
<age>12</age>
<subject>maths</subject>
<subject>history</subject>
</person>
<person dni="12343sdfF" >
Description for marcos
<name>marcos</name>
<age>12</age>
<subject>music</subject>
<subject>Spanish</subject>
</person>
<person dni="345634345F" >
<name>JL</name>
<age>25</age>
<subject>science</subject>
<subject>maths</subject>
Description for JL
</person>
</people>
如您所见,每个人的描述文本节点的位置在评估时都是未知的。我写过这个DTD:
people.dtd
<!ELEMENT people (person+)>
<!ELEMENT person (name|age|subject+|#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ATTLIST person dni CDATA #REQUIRED>
我已尝试过几行(名称|年龄|主题+ | #PCDATA)的所有组合,但我仍然无法将其与xml文档匹配。
答案 0 :(得分:1)
当您有混合内容(http://www.w3.org/TR/xml/#sec-mixed-content)时,您无法指定顺序。
你必须像这样声明person
:
<!ELEMENT person (#PCDATA|name|age|subject)*>