XML文档可以同时遵循DTD和XML Schema吗?

时间:2013-04-15 17:19:53

标签: xml schema dtd

XML文档是否合法指定它遵循DTD 一个架构? 两者不会相互冲突吗?

2 个答案:

答案 0 :(得分:1)

  

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

  

两者不会相互冲突吗?

只有当其中一人强制执行其他禁止的事情时(在这种情况下声称要遵循这两种情况,这将是一件奇怪的事情)。

答案 1 :(得分:1)

从技术上讲,我认为你会遇到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.xsl"?>
<doc>
    <test>Test Doc</test>
</doc>