3

XML文書がDTDスキーマの両方に従うことを指定することは合法ですか? 両者は対立しないのだろうか。

4

2 に答える 2

2

技術的には、DTD がスキーマを参照するための属性 (名前空間宣言とスキーマの場所) を認識しないという問題があると思います。

ただし、XML の検証方法と、スキーマが指定されている場合に検証のために DTD を無視できるかどうかに依存すると思います。

また、あなたの課題では、同じ XML インスタンスから両方を参照する必要がありますか? おそらく、2 つのバージョンの XML を持つことができます。1 つは DTD を参照し、もう 1 つはスキーマを参照しますか?


他に2つの可能なオプションがあります...

スキーマ属性の宣言:

<!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とスキーマの両方に従うことを指定することは合法ですか?

はい

両者は対立しないのだろうか。

一方が他方が禁じていることを義務付けている場合のみ (この場合、両方に従うと主張するのは奇妙なことです)。

于 2013-04-15T17:26:22.477 に答える