Apa tujuan file XSD?

90

Karena kita dapat melakukan query pada file XML dari C # (.NET), mengapa kita membutuhkan file XSD? Saya tahu itu adalah file metadata dari file XML tertentu. Kita bisa menentukan hubungan di XSD, tapi apa fungsinya?

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>

Saya ingin mendapatkan data dari Orderelemen sesuai dengan yang disediakan CustomerID.

Juga : Apa tujuan memberikan hubungan di XSD?

Angsa Merah
sumber
stackoverflow.com/questions/2333998/… , juga bisa dirujuk!
AVA

Jawaban:

106

File XSD digunakan untuk memvalidasi bahwa file XML sesuai dengan format tertentu.

Dalam hal ini mereka mirip dengan DTD yang sudah ada sebelumnya.

Perbedaan utama antara XSD dan DTD adalah XSD ditulis dalam XML dan dianggap lebih mudah dibaca dan dipahami.

Oded
sumber
terima kasih, jadi bisakah saya melakukan query pada file xsd dari c3.net menggunakan Linq untuk mendapatkan data dari file xml? Bagaimana?
Red Swan
@Lalit - Linq tidak ada hubungannya dengan itu.
Oded
Perbedaan penting lainnya adalah Anda tidak dapat melakukan banyak hal dengan mudah dilakukan di XSD dalam DTD.
mortal
Jadi untuk mendapatkan data, saya hanya bisa menggunakan file xml kan? Saya tidak perlu membuat file skema. (Saya tidak ingin memvalidasinya untuk saat ini) Saya hanya ingin mendapatkan data xml yang memiliki berbagai catatan yang bergantung pada peta ID di setiap elemen.
Red Swan
4
@Lalit - jika Anda tidak peduli dengan hubungan seperti itu dan tidak perlu memeriksa apakah mereka sesuai dengan semacam aturan (dikodifikasi dalam XSD), maka jangan gunakan XSD dan cukup kueri XML secara langsung.
Oded
48

Tanpa Skema XML (file XSD), file XML adalah sekumpulan elemen dan atribut yang relatif bebas. File XSD menentukan elemen dan atribut mana yang diizinkan dan dalam urutan apa.

Secara umum XML adalah bahasa logam. File XSD menentukan bahasa tertentu dalam bahasa logam itu. Misalnya, jika file XSD Anda berisi definisi XHTML 1.0, maka file XML Anda harus sesuai dengan XHTML 1.0 daripada beberapa format lainnya.

Oleg
sumber
19

Anda menyebutkan C # dalam pertanyaan Anda sehingga mungkin membantu untuk menganggap XSD memiliki peran yang mirip dengan antarmuka C #.

Ini mendefinisikan seperti apa XML harus 'terlihat' dengan cara yang mirip dengan antarmuka yang mendefinisikan apa yang harus diterapkan oleh kelas.

Garry
sumber
4
Jika Anda mengambil kelas dan antarmuka yang seharusnya diterapkan, Anda dapat mengetahui apakah kelas tersebut benar. Dengan cara yang sama, jika Anda mengambil file xml dan itu xsd, Anda dapat mengetahui apakah xml sudah benar.
Garry
16

XSD membatasi kosakata dan struktur dokumen XML.

  • Tanpa XSD , dokumen XML hanya perlu mengikuti aturan untuk dibentuk dengan baik seperti yang diberikan dalam Rekomendasi XML W3C .
  • Dengan XSD , dokumen XML harus mematuhi batasan tambahan yang ditempatkan pada nama dan nilai elemen dan atributnya agar dianggap valid terhadap XSD sesuai Rekomendasi Skema XML W3C .

XML adalah tentang kesepakatan , dan XSD menyediakan sarana untuk menyusun dan mengkomunikasikan kesepakatan di luar definisi dasar XML itu sendiri.

kjhughes
sumber
12

Juga pertanyaannya adalah: Apa tujuan pemberian relasi di xsd.

Misalkan Anda ingin membuat beberapa XML untuk alat pihak eksternal, atau yang serupa - bagaimana Anda tahu struktur apa yang boleh diikuti untuk digunakan dengan benar untuk alat mereka? Anda menulis ke skema. Demikian juga jika Anda ingin orang lain menggunakan alat Anda, Anda akan menulis skema untuk mereka ikuti. Mungkin juga berguna untuk memvalidasi XML Anda sendiri.

Robert
sumber
8

Sebelum memahami XSD (XML Schema Definition) izinkan saya menjelaskan;

Apa skema?

sebagai contoh; emailID: peter # gmail

Anda dapat mengidentifikasi emailID di atas tidak valid karena tidak ada @, .com atau .net atau .org.

Kami tahu skema emailnya seperti [email protected].

Kesimpulan: Skema tidak memvalidasi data, tetapi melakukan validasi struktur.

XSD sebenarnya adalah salah satu implementasi XML Schema. orang lain yang kita miliki

Kami menggunakan XSD untuk memvalidasi data XML.

Premraj
sumber
7

XSD adalah kontrak formal yang menentukan bagaimana dokumen XML dapat dibentuk. Ini sering digunakan untuk memvalidasi dokumen XML, atau untuk menghasilkan kode dari.

troelskn
sumber
5

File XSD adalah Definisi Skema XML dan digunakan untuk menyediakan metode standar untuk memeriksa apakah dokumen XML yang diberikan sesuai dengan yang Anda harapkan.

a'r
sumber
5

File .xsd disebut skema XML. Melalui skema XML, kita mungkin memerlukan struktur tertentu dalam XML tertentu - elemen mana yang urutannya, berapa kali, dengan atribut yang mana, bagaimana mereka disarangkan, dll. Jika kita memiliki skema untuk input XML kita, kita dapat memverifikasi bahwa itu berisi data yang kita perlukan untuk dimuat, dan tidak ada yang lain, dengan beberapa baris yang memanggil validator skema.


sumber
4

File xsd adalah skema dari file xml - ini mendefinisikan elemen mana yang mungkin terjadi dan batasannya (seperti jumlah, urutan, batas, hubungan, ...)

mort
sumber