Xml 如何通过DTD验证中间文本?

Xml 如何通过DTD验证中间文本?,xml,validation,dtd,dtd-parsing,Xml,Validation,Dtd,Dtd Parsing,我的XML-DTD无法验证此代码: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE init[ <!ELEMENT init(a)> <!ELEMENT a(b,c,(d|e))> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> <!ELEMENT d (#PCDATA)> <!ELEMENT e (#PCDATA)&g

我的XML-DTD无法验证此代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE init[
<!ELEMENT init(a)>
<!ELEMENT a(b,c,(d|e))>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
<!ELEMENT e (#PCDATA)>
]>
<init>
<a>
dolor
<b> Lorem </b>
dolor
<c> Ipsum </c>
<d> hi </d>
dolor
</a>
</init>

]>

我看到了两件事:

  • 您需要在元素名称和内容模型之间添加空格(左括号)
  • 您需要将
    a
    声明为模型
  • 例如

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE init [
    <!ELEMENT init (a)>
    <!ELEMENT a (#PCDATA|b|c)*>
    <!ELEMENT b (#PCDATA)>
    <!ELEMENT c (#PCDATA)>
    ]>
    <init>
        <a>
            dolor
            <b> Lorem </b>
            dolor
            <c> Ipsum </c>
            dolor
        </a>
    </init>
    
    
    ]>
    多洛
    洛勒姆
    多洛
    乱数假文
    多洛
    
    示例2

    
    ]>
    多洛
    洛勒姆
    多洛
    乱数假文
    你好
    多洛
    
    我更改了问题,但您的解决方案适用于之前的案例。@codenob-
    a
    仍然是一个混合内容模型,必须以某种方式声明。我添加了第二个示例。有关更多信息,请参阅。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE init [
    <!ELEMENT init (a)>
    <!ELEMENT a (#PCDATA|b|c|d|e)*>
    <!ELEMENT b (#PCDATA)>
    <!ELEMENT c (#PCDATA)>
    <!ELEMENT d (#PCDATA)>
    <!ELEMENT e (#PCDATA)>
    ]>
    <init>
        <a>
            dolor
            <b> Lorem </b>
            dolor
            <c> Ipsum </c>
            <d> hi </d>
            dolor
        </a>
    </init>