- PR -

xsdのattributeタグ内にある複数タグのvalueを取得する方法

1
投稿者投稿内容
タクマン
常連さん
会議室デビュー日: 2004/06/14
投稿数: 42
投稿日時: 2008-02-26 10:17
現在、WindowsXP、.NetFramework2.0、VB.NETにてxsdから特定データを取得する処理を書いているところなのですが、どうしても取得する方法が見つからない部分があります。


------------------------↓該当xsdの部分---------------------------

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified">
<xs:element name="Sample">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" maxOccurs="32">
<xs:complexType>
<xs:attribute name="SampleNumber" use="required">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxInclusive value="32" />
<xs:minInclusive value="1" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
------------------------↑該当xsdの部分---------------------------
xsdのスキーマをDataSetオブジェクトに変換し、そのDataSetの中からDataTable("Sample")を取得し、"SampleNumber"カラムから
(maxInclusive, 32)、(minInclusive, 1)のペアを取得しようとしたのですが、どうしてもSamleNumberカラムの属性しか取得できません。
elementタグ内の属性は簡単に取得できたのですが、attributeタグ内では何か別の方法があるのでしょうか?

------------------------↓取得しようとしたVB.NETソース---------------------------
Dim sampleset As New DataSet
sampleset.ReadXmlSchema("sample.xsd") ' ← sample.xsdがxsdファイル名です
Dim sampletable as DataTable = sampleset.Tables("Sample")
sampletable.Columns("SampleNumber") ' ← SumpleNumberカラムは取れますが、その中のタグの属性の取得方法がわかりません。
------------------------↑取得しようとしたVB.NETソース---------------------------
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-02-26 12:33
多分無視されています。
xsd.exe を使って xsd から DataSet を書き出してみてください。
タクマン
常連さん
会議室デビュー日: 2004/06/14
投稿数: 42
投稿日時: 2008-02-26 12:50
>Hongliangさん
レスありがとうございます。

早速xsd.exeで大元のxsdを変換したところ、確かにSampleクラス内のプロパティとして何も記述されておらず、結果的におっしゃる通り無視されている(見えていない)ということがわかりました。

この件はお客様に確認を取る必要がありますが、念のために、普通、こういうxsdファイルというものは存在しないものなのでしょうか?
VS2005上でxsdを開くとエラーも無くツリー上にGUIで見ることが出来るため、xsdファイルフォーマットとしては正常なように思えます。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-02-26 13:18
XML Schema としては問題ありません。
ただ、.NET 側が対応していないだけですね。http://support.microsoft.com/kb/811107/ja
KB もあがっています。

データを XML に置くならその読み込み時に Validation も可能ですが……。
タクマン
常連さん
会議室デビュー日: 2004/06/14
投稿数: 42
投稿日時: 2008-02-26 13:27
>Hongliangさん
またまたレスありがとうございます。
なんとなんと!! .NET側が対応していないとは!!
Validationで解決できるか調査してみます。
1

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