3

XML 文档指定它遵循 DTDSchema 是否合法?两者不会互相冲突吗?

4

2 回答 2

2

从技术上讲,我认为您会遇到 DTD 无法识别引用模式的属性(命名空间声明和模式位置)的问题。

但是,我认为这取决于您如何验证 XML,以及如果指定了模式,您是否可以忽略 DTD 进行验证。

此外,对于您的作业,您确定必须从同一个 XML 实例中引用两者吗?也许你可以有 2 个版本的 XML;一个引用 DTD 和一个引用架构?


这是另外两个可能的选择...

声明模式属性:

<!DOCTYPE doc [
<!ELEMENT doc (test)>
<!ATTLIST doc
          xmlns:xsi CDATA #IMPLIED
          xsi:noNamespaceSchemaLocation CDATA #IMPLIED>
<!ELEMENT test (#PCDATA)>
]>
<doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="test.xsd">
    <test>Test Doc</test>
</doc>

使用处理指令来引用架构:

<!DOCTYPE doc [
<!ELEMENT doc (test)>
<!ELEMENT test (#PCDATA)>
]>
<?xml-model href="test.xsd"?>
<doc>
    <test>Test Doc</test>
</doc>
于 2013-04-15T17:59:55.737 回答
1

XML 文档指定它遵循 DTD 和 Schema 是否合法?

是的

两者不会互相冲突吗?

只有当他们中的一个人要求其他人禁止的事情时(在这种情况下,声称遵循两者都是一件奇怪的事情)。

于 2013-04-15T17:26:22.477 回答