- PR -

XMLスキーマチェックについて

1
投稿者投稿内容
KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 2004-03-03 17:29
こんにちは。
VB.NETで開発しているものです。

現在、XMLとスキーマのチェックを行おうとしているのですが、
うまくいきません。
(やろうとしているソースは以下の以下のHPです)

http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml08/easyxml08_01.html

タグ名が間違っていたりすると、チェックで引っかかるのですが、
あるタグをまるまる削除しても、チェックで引っかかりません。

どなたか分かる方がいらっしゃいましたら、ご教授下さい。
お願いします。
Atsushi.Eno
ベテラン
会議室デビュー日: 2003/04/23
投稿数: 60
投稿日時: 2004-03-03 23:50
そんなことはないでしょう…と思い、試しに「名前」「住所」を消してみたら、
ちゃんとエラーになりました。

Unhandled Exception: System.Xml.Schema.XmlSchemaException: The element 'http://w
ww.atmarkIT.co.jp/ns/sample/addressBook:個人' has incomplete content. Expected '
http://www.atmarkIT.co.jp/ns/sample/addressBook:名前'. An error occurred at file
:///C:/cygwin/home/ginga/tests/atmarkit/sample01.xml, (12, 5).

# どのようなXMLに修正して試したのかが分からないと再現できません ;-)
KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 2004-03-04 19:59
遅くなりました。
例えば、下のようなXMLとスキーマで、
"<test02>222</test02>"をまるまる消したとします。

<?xml version="1.0" encoding="utf-8"?>
<test xmlns="http://tempuri.org/XMLFile1.xsd">
<test01>111</test01>
<test02>222</test02>
<test03 />
</test>

<?xml version="1.0"?>
<xs:schema id="NewDataSet" targetNamespace="http://tempuri.org/XMLFile1.xsd" xmlns:mstns="http://tempuri.org/XMLFile1.xsd" xmlns="http://tempuri.org/XMLFile1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="test01" type="xs:string" minOccurs="0" />
<xs:element name="test02" type="xs:string" minOccurs="0" />
<xs:element name="test03" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="ja-JP" msdata:EnforceConstraints="False">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="test" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>

すると、スキーマチェックでエラーが起こらないのです。
タグ名が違うときは、出るのに....
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2004-03-04 20:21
karajanです。

minOccurs="0"
の要素はなくてもいいということです。

ですので、なくてもエラーにはなりません。

KKK
大ベテラン
会議室デビュー日: 2003/10/10
投稿数: 119
投稿日時: 2004-03-05 01:01
ありがとうございます。

"minOccurs"の意味はそういうことだったのですね。
私の勉強不足でした...

ありがとうございます。
1

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