xml - XML 中的外部引用 DTD

标签 xml dtd xml-validation

测试.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email SYSTEM "test.dtd">
<email>
<von>test@test.com</von>
<zu>xxx@example.com</zu>
<titel>Hello</titel>
<text>Dear John....;-).</text>
<prior type="schnell"/>
</email>

测试.dtd:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email [
<!ELEMENT email (von,zu,titel,text,prior)>
<!ELEMENT von (#PCDATA)>
<!ELEMENT zu (#PCDATA)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ATTLIST prior type CDATA #REQUIRED >
]>

test.dtd 中的错误代码

The markup declarations contained or pointed to by the document type declaration must be well-formed. [2]

请帮忙!!

最佳答案

您有重复的 DOCTYPE 声明。如果要引用外部 DTD:

test.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email SYSTEM "test.dtd">
<email>
<von>test@test.com</von>
<zu>xxx@example.com</zu>
<titel>Hello</titel>
<text>Dear John....;-).</text>
<prior type="schnell"/>
</email>

测试.dtd

<!ELEMENT email (von,zu,titel,text,prior)>
<!ELEMENT von (#PCDATA)>
<!ELEMENT zu (#PCDATA)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT prior EMPTY>
<!ATTLIST prior type CDATA #REQUIRED >

如果您希望 DTD 作为 XML 文件(内部子集)的一部分:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email [
<!ELEMENT email (von,zu,titel,text,prior)>
<!ELEMENT von (#PCDATA)>
<!ELEMENT zu (#PCDATA)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT prior EMPTY>
<!ATTLIST prior type CDATA #REQUIRED >
]>
<email>
<von>test@test.com</von>
<zu>xxx@example.com</zu>
<titel>Hello</titel>
<text>Dear John....;-).</text>
<prior type="schnell"/>
</email>

注意:您还缺少 prior 元素的 ELEMENT 声明。

关于xml - XML 中的外部引用 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455394/

相关文章:

html - 如何转义内联样式中的引号?

带参数的 XML 实体?

java - 为什么 org.w3c.dom.DocumentBuilder 偷偷地自己给 XML 元素添加属性

xml - 需要 XSD 中混合内容的示例

c - libxml2 解析带有缩进的文档

php - 在 PHP 中使用 XML-Reader 进行 XML 验证

php - 如何在 PHP 中更新 xpath 的版本?

java - 如何向用户报告丢失的DTD文件?

xml - 错误 : The content of 'persons' must match (annotation? , (simpleType | complexType)?, (unique | key | keyref)*))

.net - .Net XML 模式验证是否应该在到达第一个无效元素时停止?