Xml 如何通过DTD验证中间文本?
我的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 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>