Mục đích của tệp XSD là gì?


90

Vì chúng ta có thể truy vấn tệp XML từ C # (.NET), tại sao chúng ta cần tệp XSD? Tôi biết đó là tệp siêu dữ liệu của tệp XML cụ thể. Chúng ta có thể chỉ định các mối quan hệ trong XSD, nhưng chức năng của nó là gì?

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>

Tôi muốn lấy dữ liệu từ các Orderphần tử theo một cung cấp CustomerID.

Ngoài ra : Mục đích của việc cung cấp các mối quan hệ trong XSD là gì?


stackoverflow.com/questions/2333998/… , cũng có thể được giới thiệu!
AVA

Câu trả lời:


106

Các tệp XSD được sử dụng để xác nhận rằng các tệp XML tuân theo một định dạng nhất định.

Về mặt đó, chúng tương tự như các DTD đã tồn tại trước đó.

Sự khác biệt chính giữa XSD và DTD là XSD được viết bằng XML và được coi là dễ đọc và dễ hiểu hơn.


cảm ơn, vậy tôi có thể truy vấn các tệp xsd từ c3.net bằng cách sử dụng Linq để lấy dữ liệu từ tệp xml không? Làm sao?
Red Swan

@Lalit - Linq không liên quan gì đến nó.
Oded

Một sự khác biệt quan trọng khác là bạn không thể thực hiện nhiều thứ một cách dễ dàng trong XSD trong một DTD.
mort

Vì vậy, để lấy dữ liệu, tôi chỉ có thể sử dụng tệp xml phải không? Tôi không cần tạo tệp giản đồ của nó. (Tôi không muốn xác thực nó ngay bây giờ) Tôi chỉ muốn lấy dữ liệu của xml có các bản ghi khác nhau phụ thuộc vào bản đồ ID trong mỗi phần tử.
Red Swan

4
@Lalit - nếu bạn không quan tâm đến các mối quan hệ như vậy và không cần kiểm tra xem chúng có tuân theo một số loại quy tắc (được mã hóa trong XSD) hay không, thì đừng sử dụng XSD và chỉ cần truy vấn trực tiếp XML.
Oded

48

Nếu không có Lược đồ XML (tệp XSD), tệp XML là một tập hợp các phần tử và thuộc tính tương đối miễn phí. Tệp XSD xác định các phần tử và thuộc tính nào được phép và theo thứ tự.

Nói chung, XML là một ngôn ngữ kim loại. Các tệp XSD xác định các ngôn ngữ cụ thể trong ngôn ngữ kim loại đó. Ví dụ: nếu tệp XSD của bạn chứa định nghĩa của XHTML 1.0, thì tệp XML của bạn bắt buộc phải phù hợp với XHTML 1.0 chứ không phải một số định dạng khác.


19

Bạn đề cập đến C # trong câu hỏi của mình nên có thể hữu ích khi nghĩ rằng XSD đóng vai trò tương tự như giao diện C #.

Nó xác định XML sẽ 'trông như thế nào' theo cách tương tự như một giao diện xác định những gì một lớp sẽ triển khai.


4
Nếu bạn sử dụng một lớp và một giao diện mà nó phải triển khai, bạn có thể biết lớp đó có đúng hay không. Theo cách tương tự, nếu bạn lấy một tệp xml và đó là xsd, bạn có thể biết liệu xml có đúng hay không.
Garry

16

XSD hạn chế từ vựng và cấu trúc của các tài liệu XML.

  • Không cần XSD , một tài liệu XML chỉ cần tuân theo các quy tắc để được định dạng tốt như đã đưa ra trong Khuyến nghị XML của W3C .
  • Với XSD , một tài liệu XML phải tuân theo các ràng buộc bổ sung được đặt trên tên và giá trị của các phần tử và thuộc tính của nó để được coi là hợp lệ so với XSD theo Khuyến nghị lược đồ XML W3C .

XML là tất cả về thỏa thuận và XSD cung cấp các phương tiện để cấu trúc và truyền đạt thỏa thuận ngoài định nghĩa cơ bản của chính XML.


12

Ngoài ra câu hỏi là: Mục đích của việc cung cấp các mối quan hệ trong xsd là gì.

Giả sử bạn muốn tạo một số XML cho công cụ của một bên bên ngoài hoặc tương tự - làm thế nào bạn biết cấu trúc nó được phép tuân theo để sử dụng đúng cho công cụ của họ? bạn ghi vào một lược đồ. Tương tự như vậy, nếu bạn muốn người khác sử dụng công cụ của mình, bạn sẽ viết một lược đồ để họ làm theo. Nó cũng có thể hữu ích để xác thực XML của riêng bạn.


8

Trước khi hiểu XSD (Định nghĩa lược đồ XML), hãy để tôi giải thích;

Lược đồ là gì?

ví dụ; emailID: peter # gmail

Bạn có thể xác định rằng ID email ở trên không hợp lệ vì không có @, .com hoặc .net hoặc .org.

Chúng tôi biết lược đồ email có dạng peter@gmail.com.

Kết luận: Lược đồ không xác thực dữ liệu, Nó không xác thực cấu trúc.

XSD thực sự là một trong những triển khai của Lược đồ XML. những người khác chúng tôi có

Chúng tôi sử dụng XSD để xác thực dữ liệu XML.


7

XSD là một hợp đồng chính thức chỉ định cách một tài liệu XML có thể được hình thành. Nó thường được sử dụng để xác thực một tài liệu XML hoặc để tạo mã từ.


5

Tệp XSD là một Định nghĩa Lược đồ XML và nó được sử dụng để cung cấp một phương pháp tiêu chuẩn để kiểm tra xem một tài liệu XML nhất định có phù hợp với những gì bạn mong đợi hay không.


5

Tệp .xsd được gọi là một lược đồ XML. Thông qua một lược đồ XML, chúng tôi có thể yêu cầu một cấu trúc nhất định trong một XML nhất định - các phần tử nào theo thứ tự, số lần, thuộc tính nào, cách chúng được lồng vào nhau, v.v. Nếu chúng tôi có một lược đồ cho đầu vào XML của mình, chúng tôi có thể xác minh rằng nó chứa dữ liệu mà chúng ta cần nó chứa, và không có gì khác, với một vài dòng gọi trình xác thực lược đồ.


4

Tệp xsd là lược đồ của tệp xml - nó xác định các phần tử nào có thể xảy ra và các hạn chế của chúng (như số lượng, thứ tự, ranh giới, mối quan hệ, ...)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.