วัตถุประสงค์ของไฟล์ XSD คืออะไร?


91

เนื่องจากเราสามารถสืบค้นไฟล์ XML จาก C # (.NET) ทำไมเราจึงต้องการไฟล์ 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>

ฉันต้องการที่จะได้รับข้อมูลจากองค์ประกอบตามที่จัดไว้ให้OrderCustomerID

นอกจากนี้ : จุดประสงค์ของการให้ความสัมพันธ์ใน XSD คืออะไร?


stackoverflow.com/questions/2333998/…ก็อาจจะอ้างถึงก็ได้!
AVA

คำตอบ:


107

ไฟล์XSDใช้เพื่อตรวจสอบว่าไฟล์ XML เป็นไปตามรูปแบบที่กำหนด

ในแง่นั้นพวกเขาคล้ายกับDTD s ที่มีอยู่ก่อนหน้าพวกเขา

ความแตกต่างหลักระหว่าง XSD และ DTD คือ XSD เขียนด้วย XML และถือว่าง่ายต่อการอ่านและทำความเข้าใจ


ขอบคุณดังนั้นฉันสามารถสอบถามไฟล์ xsd จาก c3.net โดยใช้ Linq เพื่อรับข้อมูลจากไฟล์ xml ได้หรือไม่ อย่างไร?
หงส์แดง

@Lalit - Linq ไม่มีส่วนเกี่ยวข้องใด ๆ
Oded

ข้อแตกต่างที่สำคัญอีกประการหนึ่งคือคุณไม่สามารถทำสิ่งต่างๆมากมายใน XSD ใน DTD ได้อย่างง่ายดาย
mort

ดังนั้นในการรับข้อมูลฉันสามารถใช้เฉพาะไฟล์ xml ได้ใช่ไหม ฉันไม่จำเป็นต้องสร้างไฟล์สคีมา (ฉันไม่ต้องการตรวจสอบความถูกต้องในตอนนี้) ฉันแค่ต้องการรับข้อมูลของ xml ที่มีเร็กคอร์ดต่าง ๆ ขึ้นอยู่กับ ID แมปในแต่ละองค์ประกอบ
หงส์แดง

4
@Lalit - หากคุณไม่สนใจเกี่ยวกับความสัมพันธ์เช่นนี้และไม่จำเป็นต้องตรวจสอบว่าพวกเขาเป็นไปตามกฎบางประเภท (เข้ารหัสใน XSD) อย่าใช้ XSD และเพียงแค่ค้นหา XML โดยตรง
Oded

49

หากไม่มี XML Schema (ไฟล์ XSD) ไฟล์ XML เป็นชุดองค์ประกอบและแอตทริบิวต์ที่ค่อนข้างอิสระ ไฟล์ XSD กำหนดองค์ประกอบและแอตทริบิวต์ที่อนุญาตและเรียงตามลำดับ

โดยทั่วไป XML เป็นภาษาโลหะ ไฟล์ XSD กำหนดภาษาเฉพาะภายในภาษาโลหะนั้น ตัวอย่างเช่นหากไฟล์ XSD ของคุณมีคำจำกัดความของ XHTML 1.0 แสดงว่าไฟล์ XML ของคุณต้องพอดีกับ XHTML 1.0 แทนที่จะเป็นรูปแบบอื่น ๆ


19

คุณพูดถึง C # ในคำถามของคุณดังนั้นจึงอาจช่วยให้คิดว่า XSD ทำหน้าที่คล้ายกับอินเทอร์เฟซ C #

เป็นการกำหนดว่า XML ควรมีลักษณะอย่างไรในลักษณะที่คล้ายกันซึ่งอินเทอร์เฟซจะกำหนดสิ่งที่คลาสควรนำไปใช้


4
หากคุณใช้คลาสและอินเทอร์เฟซที่ควรใช้คุณสามารถบอกได้ว่าคลาสนั้นถูกต้องหรือไม่ ในทำนองเดียวกันถ้าคุณใช้ไฟล์ xml และเป็น xsd คุณสามารถบอกได้ว่า xml ถูกต้องหรือไม่
Garry

16

XSDs จำกัด คำศัพท์และโครงสร้างของเอกสาร XML

  • โดยไม่ต้อง XSDความจำเป็นเอกสาร XML เพียงปฏิบัติตามกฎระเบียบสำหรับการที่ดีขึ้นตามที่กำหนดในคำแนะนำของ W3C XML
  • ด้วย XSD , เอกสาร XML ต้องเป็นไปตามข้อ จำกัด เพิ่มเติมวางไว้บนชื่อและค่าขององค์ประกอบและคุณสมบัติของตนเพื่อที่จะได้รับการพิจารณาที่ถูกต้องกับ XSD ต่อที่แนะนำ W3C XML Schema

XML เป็นข้อมูลเกี่ยวกับข้อตกลงและ XSD ให้วิธีการจัดโครงสร้างและสื่อสารข้อตกลงนอกเหนือจากคำจำกัดความพื้นฐานของ XML


12

คำถามก็คือวัตถุประสงค์ของการให้ความสัมพันธ์ใน xsd คืออะไร

สมมติว่าคุณต้องการสร้าง XML สำหรับเครื่องมือของบุคคลภายนอกหรือที่คล้ายกัน - คุณจะรู้ได้อย่างไรว่าโครงสร้างใดที่ได้รับอนุญาตให้ปฏิบัติตามเพื่อใช้อย่างถูกต้องสำหรับเครื่องมือของพวกเขา คุณเขียนสคีมา ในทำนองเดียวกันหากคุณต้องการให้คนอื่นใช้เครื่องมือของคุณคุณจะต้องเขียนสคีมาให้พวกเขาทำตาม นอกจากนี้ยังอาจมีประโยชน์สำหรับการตรวจสอบ XML ของคุณเอง


8

ก่อนที่จะเข้าใจ XSD (XML Schema Definition) ให้ฉันอธิบาย

schema คืออะไร?

ตัวอย่างเช่น; emailID: peter # gmail

คุณสามารถระบุรหัสอีเมลด้านบนไม่ถูกต้องเนื่องจากไม่มี @, .com หรือ. net หรือ. org

เราทราบว่าสคีมาอีเมลดูเหมือน peter@gmail.com

สรุป: Schema ไม่ได้ตรวจสอบความถูกต้องของข้อมูล แต่จะตรวจสอบความถูกต้องของโครงสร้าง

XSD เป็นหนึ่งในการใช้ XML Schema คนอื่น ๆ ที่เรามี

เราใช้ XSD เพื่อตรวจสอบข้อมูล XML


7

XSD เป็นสัญญาอย่างเป็นทางการที่ระบุวิธีการสร้างเอกสาร XML มักใช้เพื่อตรวจสอบความถูกต้องของเอกสาร XML หรือเพื่อสร้างรหัสจาก


5

ไฟล์ XSD เป็น XML Schema Definition และใช้เพื่อจัดเตรียมวิธีการมาตรฐานในการตรวจสอบว่าเอกสาร XML ที่ระบุนั้นสอดคล้องกับสิ่งที่คุณคาดหวัง


5

ไฟล์. xsd เรียกว่า XML schema ผ่าน XML schema เราอาจต้องการโครงสร้างบางอย่างใน XML ที่กำหนด - องค์ประกอบใดเรียงลำดับกี่ครั้งกับแอตทริบิวต์ใดซ้อนกันอย่างไร ฯลฯ หากเรามีสคีมาสำหรับอินพุต XML เราสามารถตรวจสอบได้ ว่ามีข้อมูลที่เราต้องการให้มีและไม่มีอะไรอื่นโดยมีสองสามบรรทัดที่เรียกใช้เครื่องมือตรวจสอบสคีมา


4

ไฟล์ xsd เป็นสคีมาของไฟล์ xml - กำหนดองค์ประกอบที่อาจเกิดขึ้นและข้อ จำกัด (เช่นจำนวนคำสั่งขอบเขตความสัมพันธ์ ... )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.