java 带有 DTD 验证的 DocumentBuilder 验证无效 XML
java DocumentBuilder with DTD validation validates invalid XML
我得到了一个简单的 XML 文档,该文档在 DTD 验证下具有以下结构:
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>
我已经尝试了这一行的几乎所有组合 (name|age|subject+|#PCDATA) 但我仍然无法让它与 xml 匹配文件.
混合内容时无法指定顺序(http://www.w3.org/TR/xml/#sec-mixed-content)。
您必须这样声明 person
:
<!ELEMENT person (#PCDATA|name|age|subject)*>
我得到了一个简单的 XML 文档,该文档在 DTD 验证下具有以下结构:
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>
我已经尝试了这一行的几乎所有组合 (name|age|subject+|#PCDATA) 但我仍然无法让它与 xml 匹配文件.
混合内容时无法指定顺序(http://www.w3.org/TR/xml/#sec-mixed-content)。
您必须这样声明 person
:
<!ELEMENT person (#PCDATA|name|age|subject)*>