2009-05-27 10 views
3

私は、データソースの構成データと 'dataseries'要素に保持されている関連クエリを保持するXMLファイルを持っています。xmlを読むときに、いつxmlスキーマ(.xsd)を使用する必要がありますか?

私は本当にXMLから構成されたドメインオブジェクトを必要とせず、接続を設定するために設定を読み、使用しました。私が定義したXMLスキーマを使用する利点があるのでしょうか?

XMLを読み込むためにLINQ to XMLを使用していますが、当初は強く型付けされたXMLを使用することをお勧めします。

.xsdを使用する必要がありますか、それとも過剰ですか?

モックXMLファイル:あなたが検証 XMLにしたいとき

<?xml version="1.0" encoding="utf-8" ?> 
<datasource name=" Datasource" cache="true"> 
    <database> 
    <connection> 
     <provider-name>sqlServer6.0</provider-name> 
     <source name="E5" 
      connectionString=""/> 
    </connection> 
    <update-interval>30</update-interval> 
    <minimum-update-interval>2</minimum-update-interval> 
    </database> 
    <dataseries name="" identifier="e5"> 
    <graph-type></graph-type> 
     <query> 
     SELECT Period, Price 
     FROM PriceUS 
     WHERE Date = @date 
     </query> 
    </dataseries> 
    <dataseries name="" identifier="e52"> 
    <graph-type></graph-type> 
    <query> 
     SELECT Period, Price 
     FROM PriceUS 
     WHERE Date = @date 
    </query> 
    </dataseries> 
</datasource> 

答えて

4

「正しい」XML文書には、2つのレベルがあります。well-formed and validです。 整形式はXML仕様に準拠していることを意味し、validはスキーマに準拠していることを意味します。あなたは、見知らぬ人からXML文書を受け入れる場合、文書の正当性をチェックして前に進むことをお勧めします。

前述のとおり、XMLスキーマを使用してXMLデータバインディングエンティティを生成することもできます。ワールドまたはクライアントにサービスまたはスキーマを公開する場合、スキーマ文書は仕様として使用できます。次に、ワールドまたはクライアントは、XSDファイルを使用して、交換するXML文書の検証またはデータバインドを行うことができます。

+0

スキーマはプラグインフレームワークの一部であるため、.xsdは仕様として使用する利点があります。私はdatabindする必要はないので、LINQを使ったquerysは複雑なものになります。 – theringostarrs

+0

XMLファイルを完全に制御できますか?他の人がそれを変更したり、別の人にあなたを送ったりすることができますか?その場合は、検証(スキーマ)します。もしそうでなければ、とにかく検証するでしょう。 –

0

スキーマは良いですが、例えば、特定の要素が存在しているかの値の制限されたセットを持っていることを確認してください。スキーマは、XMLで多くの作業を行い、XMLをC#オブジェクトに変換する方が簡単な場合もあります。この場合は、xsd.exeコードジェネレータを使用してマーシャリングできるC#オブジェクトを生成し、 XMLから非マーシャルされます。

1

技術的には、XMLには2つの正式なスキーマタイプがあります。文書型定義(DTD)と呼ばれるオリジナルのスキーマ構文があります。これは古代のSGML時代からのホールドオーバーです。そして、現代のデータとより互換性のあるW3C標準、XSDがあります。

私がこれを言及する唯一の理由は、DTDを使用して記述されたXMLファイルを受け取る可能性があり、その対処方法を知る必要があるかもしれないということです。

友人は友人に新しいアプリケーションのDTDを作成させてはいけません。

+0

リラックスNGコンパクトはどうですか? –

関連する問題