XSDファイルの目的は何ですか?


90

C#(.NET)からXMLファイルに対してクエリを実行できるので、なぜXSDファイルが必要なのでしょうか。特定のXMLファイルのメタデータファイルです。XSDで関係を指定できますが、その機能は何ですか。

XML

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

Order提供されたに従って要素からデータを取得したいCustomerID

また:XSDで関係を与える目的は何ですか?


stackoverflow.com/questions/2333998/…、参照することもできます!
AVA

回答:


106

XSDファイルは、XMLファイルが特定の形式に準拠していることを検証するために使用されます。

その点で、それらはそれらの前に存在していたDTDに似ています

XSDとDTDの主な違いは、XSDはXMLで記述されており、読みやすく理解しやすいと考えられていることです。


おかげで、xmlファイルからデータを取得するためにLinqを使用してc3.netからxsdファイルをクエリできますか?どうやって?
レッドスワン

@Lalit-Linqはそれとは何の関係もありません。
2010

もう1つの重要な違いは、DTDのXSDで簡単にできることの多くは実行できないことです。
MORT

データを取得するには、xmlファイルしか使用できません。スキーマファイルを生成する必要はありません。(今は検証したくありません)各要素のIDマップに依存するさまざまなレコードを持つxmlのデータを取得したいだけです。
レッドスワン

4
@Lalit-関係などを気にせず、それらが何らかの規則(XSDで体系化されている)に準拠していることを確認する必要がない場合は、XSDを使用せず、XMLに直接クエリを実行します。
2010

48

XMLスキーマ(XSDファイル)がない場合、XMLファイルは比較的自由な要素と属性のセットです。XSDファイルは、許可される要素と属性とその順序を定義します。

一般に、XMLはメタ言語です。XSDファイルは、そのメタ言語内の特定の言語を定義します。たとえば、XSDファイルにXHTML 1.0の定義が含まれている場合、XMLファイルは他の形式ではなくXHTML 1.0に適合する必要があります。


19

質問でC#について言及しているため、XSDをC#インターフェイスと同様の役割を果たしていると考えると役立つ場合があります。

これは、クラスが実装する必要があるものをインターフェースが定義するのと同様の方法で、XMLが「どのように見える」かを定義します。


4
あなたがクラスとそれが実装することになっているインターフェースを取るならば、あなたはクラスが正しいかどうかを知ることができます。同様に、xmlファイルを取得してそれがxsdの場合、xmlが正しいかどうかを確認できます。
ギャリー

16

XSDは、XML文書の語彙と構造を制約します。

  • XSDがない場合、XMLドキュメントは、W3C XML勧告で規定されているように、整形式であるためのルールに従うだけで済みます。
  • XSDを使用する場合、XMLドキュメントは、W3C XMLスキーマ勧告に従ってXSDに対して有効であると見なされるために、その要素と属性の名前と値に課される追加の制約に従う必要があります。

XMLはすべて合意に関するものであり、XSDはXML自体の基本的な定義を超えて合意を構築および伝達する手段を提供します。


12

また質問です:xsdで関係を与える目的は何ですか。

外部関係者のツールなどのXMLを生成するとします。ツールで正しく使用するために、どのような構造が許可されているかを知るにはどうすればよいでしょうか。スキーマに書き込みます。同様に、他の人にあなたのツールを使わせたいなら、あなたが彼らが従うべきスキーマを書くでしょう。また、独自のXMLを検証する場合にも役立ちます。


8

XSD(XMLスキーマ定義)を理解する前に説明しましょう。

スキーマとは何ですか?

例えば; emailID:peter#gmail

@ 、. com、.net、.orgがないため、上記のemailIDが無効であることを確認できます。

メールスキーマはpeter@gmail.comのようになっています。

結論:スキーマはデータを検証せず、構造の検証を行います。

XSDは実際にはXMLスキーマの実装の1つです。私たちが持っている他の

XSDを使用してXMLデータを検証します。


7

XSDは、XMLドキュメントの形成方法を指定する正式な契約です。多くの場合、XMLドキュメントの検証やコードの生成に使用されます。


5

XSDファイルはXMLスキーマ定義であり、指定されたXMLドキュメントが期待どおりであることを確認する標準的な方法を提供するために使用されます。


5

.xsdファイルはXMLスキーマと呼ばれます。XMLスキーマを介して、特定のXMLに特定の構造が必要な場合があります。どの要素がどの順序で、何回、どの属性でどのようにネストされているかなどです。XML入力用のスキーマがある場合は、スキーマバリデーターを呼び出す数行で、必要なデータだけが含まれていること。


4

xsdファイルはxmlファイルのスキーマです-発生する可能性のある要素とその制限(量、順序、境界、関係など)を定義します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.