XML文書がDTDとスキーマの両方に従うことを指定することは合法ですか? 両者は対立しないのだろうか。
1843 次
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 に答える