- - PR -
XML 言語指定時のエラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-21 10:43
こんにちは。
VB.NETで開発している者です。 現在、XMLとXMLスキーマのチェックを"XmlValidatingReader"で行っています。 もし、定義と作成したXMLの構造が違えば、エラーで落ちるようになっています。 ここで、以下のように言語の指定を付け加えました。 <Msg ID="005"> <JPN xml:lang="ja">削除してもよろしいですか?</JPN> <ENG xml:lang="en">1</ENG> <CHN xml:lang="zh">1</CHN> </Msg> すると、スキーマとのチェックで以下のようなエラーが出てしまいます。 「"'http://www.w3.org/XML/1998/namespace:lang' 属性が宣言されていません。 file:///D:/ERPPKG/SYSTEM/xmlMsg.xml (60 , でエラーが発生しました。"」 ネームスペースxmlは宣言しなくても、使えると思うのですが... (ちなみに宣言したら、予約語ですと怒られました...) どなたか原因が分かる方がいらっしゃいましたら、ぜひご教授下さい。 お願いします。 | ||||
|
投稿日時: 2004-01-21 18:41
xml:langは特別な属性ではありませんので、属性参照を要素の型に定義しなければ使えません。 以下の1行をスキーマの直後に入れて宣言を参照し、 <xs:import schemaLocation='http://www.w3.org/2001/xml.xsd' namespace='http://www.w3.org/XML/1998/namespace' /> xml:langを使用する要素の型をcomplexTypeにして、xml:lang属性のattribute useを追加してみて下さい(↓こんな感じです): <xs:element name='root'> <xs:complexType> <xs:attribute ref='xml:lang' /> </xs:complexType> </xs:element> | ||||
|
投稿日時: 2004-01-22 10:19
コメント、ありがとうございます。
実際にやってみたのですが、うまくいきません。 宣言はできていると思うのですが、属性の追加がうまくできていないみたいです。 <Msg ID="005"> <JPN xml:lang="ja">削除してもよろしいですか?</JPN> <ENG xml:lang="en">1</ENG> <CHN xml:lang="zh">1</CHN> </Msg> 上記のXMLのスキーマを書きます。 <xs:element name="JPN"> <xs:complexType> <xs:attribute name="lang" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="ENG"> <xs:complexType> <xs:attribute ref='xml:lang' /> </xs:complexType> </xs:element> <xs:element name="CHN"> <xs:complexType> <xs:attribute ref='xml:lang' /> </xs:complexType> </xs:element> どこか間違えがあれば、ご指摘ください。 お願いします。 | ||||
|
投稿日時: 2004-01-22 14:22
JPN要素の定義を以下のものにしたらどうでしょうか?
ENG, CHNも同様に。 <xs:element name="JPN"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute ref="xml:lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> | ||||
|
投稿日時: 2004-01-23 10:24
ありがとうございます。
早速試してみたところ、できました!! 大変助かりました。 これからもっと勉強します。 |
1