Sự khác biệt giữa Ngôn ngữ đánh dấu mở rộng (XML) và Lược đồ XML (XSD) là gì?
Sự khác biệt giữa Ngôn ngữ đánh dấu mở rộng (XML) và Lược đồ XML (XSD) là gì?
Câu trả lời:
Trên thực tế, XSD chính là XML. Mục đích của nó là xác thực cấu trúc của một tài liệu XML khác. XSD không bắt buộc đối với bất kỳ XML nào, nhưng nó đảm bảo rằng XML có thể được sử dụng cho một số mục đích cụ thể. XML chỉ chứa dữ liệu ở định dạng và cấu trúc phù hợp.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema>
nhưng cuối cùng vẫn gặp lỗi: Error!!! The 'minOccurs' attribute cannot be present.
Lấy một ví dụ
<root>
<parent>
<child_one>Y</child_one>
<child_two>12</child_two>
</parent>
</root>
và thiết kế một xsd cho điều đó:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="child_one" type="xs:string" />
<xs:element name="child_two" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Điều gì không thể xảy ra với XSD: hãy viết nó trước vì danh sách rất nhỏ
1) Bạn không thể xác thực một nút / thuộc tính bằng cách sử dụng giá trị của một nút / thuộc tính khác.
2) Đây là một hạn chế: Một phần tử được xác định trong tệp XSD phải được xác định với chỉ một kiểu dữ liệu. [trong ví dụ trên, để <child_two>
xuất hiện trong một <parent>
nút khác , kiểu dữ liệu không thể được xác định ngoài int.
3) Bạn không thể bỏ qua việc xác thực các phần tử và thuộc tính, tức là, nếu một phần tử / thuộc tính xuất hiện trong XML, thì nó phải được xác định rõ trong XSD tương ứng. Mặc dù việc sử dụng <xsd:any>
cho phép nó, nhưng nó có các quy tắc riêng. Việc tuân thủ dẫn đến lỗi xác thực. Tôi đã thử một cách tiếp cận tương tự và chắc chắn không thành công, đây là phần Hỏi & Đáp
những gì có thể với XSD:
1) Bạn có thể kiểm tra hệ thống phân cấp thích hợp của các nút XML. [xsd xác định con nào sẽ thuộc quyền của cha mẹ nào, v.v., tuân theo sẽ được tính là lỗi, trong ví dụ trên, child_two không thể là con ngay lập tức của root, nhưng nó là con của thẻ "cha", lần lượt là một con của nút "gốc", có một hệ thống phân cấp ..]
2) Bạn có thể xác định Kiểu dữ liệu của các giá trị của các nút. [trong ví dụ trên child_two không thể có bất kỳ dữ liệu nào khác ngoài số]
3) Bạn cũng có thể xác định các loại data_type tùy chỉnh, [ví dụ: đối với nút <month>
, dữ liệu có thể là một trong 12 tháng .. vì vậy bạn cần xác định tất cả 12 tháng trong kiểu dữ liệu mới, viết tất cả các tên 12 tháng dưới dạng giá trị liệt kê ..
4) Bạn có thể hạn chế sự xuất hiện của các phần tử, sử dụng minOccurs và maxOccurs, các giá trị mặc định là 1 và 1.
.. và nhiều thứ khác nữa ...
<root> <A>A</A> <B/> <C/> </root>
và nếu <A>
là Node <A>B</A>
, thì hãy thực hiện <B>
bắt buộc, nếu <A>C</A>
sau đó thực hiện <C>
bắt buộc.
XSD:
XSD (Định nghĩa lược đồ XML) chỉ định cách mô tả chính thức các phần tử trong tài liệu Ngôn ngữ đánh dấu có thể mở rộng (XML).
Xml:
XML được thiết kế để mô tả dữ liệu . Nó độc lập với phần mềm cũng như phần cứng.
Nó tăng cường những điều sau đây.
-Chia sẻ dữ liệu.
-Nền tảng độc lập.
-Tăng tính khả dụng của Dữ liệu.
Sự khác biệt:
XSD dựa trên XML.
XSD định nghĩa các phần tử và cấu trúc có thể xuất hiện trong tài liệu, trong khi XML thì không.
XSD đảm bảo rằng dữ liệu được diễn giải đúng cách, trong khi XML thì không.
Tài liệu XSD được xác thực dưới dạng XML, nhưng điều ngược lại có thể không phải lúc nào cũng đúng.
XSD có khả năng bắt lỗi tốt hơn XML.
XSD xác định các phần tử có thể được sử dụng trong tài liệu, liên quan đến dữ liệu thực tế mà nó sẽ được mã hóa.
ví dụ:
Ngày được biểu thị là 1/12/2010 có thể có nghĩa là ngày 12 tháng 1 hoặc ngày 1 tháng 12. Khai báo kiểu dữ liệu ngày tháng trong tài liệu XSD, đảm bảo rằng nó tuân theo định dạng do XSD quy định.
XML xác định cú pháp của các phần tử và thuộc tính để cấu trúc dữ liệu trong mộttài liệu cócấu trúc tốt .
XSD (hay còn gọi là Lược đồ XML) , giống như DTD trước đây, cung cấp sức mạnh e X trong XML bằng cách cho phép người dùng xác định từ vựng và ngữ pháp của các phần tử và thuộc tính trong mộttài liệu XML hợp lệ .
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Đây:
xs: element : Xác định một phần tử.
xs: sequence : Biểu thị các phần tử con chỉ xuất hiện theo thứ tự đã nêu.
xs: complexType : Biểu thị nó chứa các phần tử khác.
xs: simpleType : Biểu thị chúng không chứa các phần tử khác.
type: string, decimal, integer, boolean, date, time,
Với sự trợ giúp của các thuộc tính bổ sung, chúng ta có thể thực hiện nhiều thao tác.
Thực hiện bất kỳ tác vụ nào trên xsd đơn giản hơn xml.
XML có một ứng dụng rộng hơn nhiều so với f.ex. HTML. Nó không có "ứng dụng" nội tại hoặc mặc định. Vì vậy, mặc dù bạn có thể không thực sự quan tâm đến việc các trang web cũng bị chi phối bởi những gì được phép, nhưng từ phía tác giả, bạn có thể muốn xác định chính xác những gì một tài liệu XML có thể chứa và có thể không.
Nó giống như thiết kế một cơ sở dữ liệu.
Vấn đề về công nghệ XML là chúng có bản chất là văn bản. Với XSD, có nghĩa là bạn có một khung định nghĩa cấu trúc dữ liệu có thể được "cắm" vào các công cụ xử lý văn bản như PHP. Vì vậy, bạn không chỉ có thể thao tác với chính dữ liệu mà còn rất dễ dàng thay đổi và ghi lại cấu trúc, thậm chí tự động tạo giao diện người dùng.
Được xem như thế này, XSD là "chất kết dính" hay "phần mềm trung gian" giữa dữ liệu (XML) và các công cụ xử lý dữ liệu.