- PR -

XML 言語指定時のエラー

1
投稿者投稿内容
KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 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は宣言しなくても、使えると思うのですが...
(ちなみに宣言したら、予約語ですと怒られました...)

どなたか原因が分かる方がいらっしゃいましたら、ぜひご教授下さい。
お願いします。
Atsushi.Eno
ベテラン
会議室デビュー日: 2003/04/23
投稿数: 60
投稿日時: 2004-01-21 18:41
引用:
ネームスペースxmlは宣言しなくても、使えると思うのですが...
(ちなみに宣言したら、予約語ですと怒られました...)



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>
KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 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>

どこか間違えがあれば、ご指摘ください。
お願いします。
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 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>
KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 2004-01-23 10:24
ありがとうございます。

早速試してみたところ、できました!!
大変助かりました。
これからもっと勉強します。
1

スキルアップ/キャリアアップ(JOB@IT)