XML ファイルの生成には、OMG によって定義された xsd ファイルを使用します。インターネットでの検証には時間がかかりすぎます。そのため、ローカル検証のためにこれらすべてのファイルをダウンロードしました。これは、単純なケースで機能します。しかし、今後は、より複雑な構造を検証する必要があります。これには、xhtml 構造の検証が含まれます。http://www.w3.org/MarkUp/SCHEMAからダウンロードしたほとんどの xsd ファイル検証エラーがあります。それらを解決しようとして、私はファイル xhtml11-model-1.xsd を開始することに集中しました。このファイルには、他の xsd ファイルで使用される多くの基本的な定義が含まれているからです。最初のダウンロード ファイルには、71 個の検証エラーが表示されました。ダウンロードしたファイルにはターゲット名前空間が宣言されていないため、宣言を追加しました。そうすることで、エラーの量が 4 に減りました。しかし、この時点で行き詰まりました。残りのエラーを修正する手段が見つかりませんでした。私はそれらの 1 つを選択して、孤立したケースとして分析しました。以下のコードを参照してください。attributeGroup name="xhtml.dir.attrib" の宣言は、ファイル xhtml-bdo-1.xsd 内にあります。しかし、このファイルは検証に合格しないため、宣言をテストファイルにコピーして、すべてを1か所にまとめました。しかし、Eclipse Kepler でこの単純なケースを検証すると、xhtml への参照で以下のエラーが発生します。
<xs:attributeGroup ref="xhtml.dir.attrib" />
s4s-elt-must-match.1: The content of 'xhtml.I18n.extra.attrib' must match (annotation?, ((attribute | attributeGroup)*, anyAttribute?)). A problem was found starting at: attributeGroup.
なにが問題ですか?宣言が正しいことを示しているのに、なぜ参照がエラーを宣言するのか。これはEclipseバリデーターの問題ですか? 私の誤解?これらの検証エラーを単に無視する必要がありますか? w3.org からダウンロードした xsd ファイルに targetNamespace 宣言がないのはなぜですか? ファイルを検証して使用する必要があるようです。ヒントをありがとう。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
elementFormDefault="qualified" >
<xs:attributeGroup name="xhtml.dir.attrib">
<xs:annotation>
<xs:documentation>
"dir" Attribute from Bi Directional Text (bdo) Module
</xs:documentation>
</xs:annotation>
<xs:attribute name="dir">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ltr" />
<xs:enumeration value="rtl" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.I18n.extra.attrib">
<xs:annotation>
<xs:documentation>Extended I18n attribute</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="xhtml.dir.attrib" />
<xs:attribute name="lang" type="xh11d:LanguageCode" />
</xs:attributeGroup>
</xs:schema>