带有DTD验证的java DocumentBuilder验证无效的XML

时间:2015-12-08 23:22:19

标签: xml validation dtd

我在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文档匹配。

1 个答案:

答案 0 :(得分:1)

当您有混合内容(http://www.w3.org/TR/xml/#sec-mixed-content)时,您无法指定顺序。

你必须像这样声明person

<!ELEMENT person (#PCDATA|name|age|subject)*>