Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn XML

XML TRANG CHỦ Giới thiệu XML XML Cách sử dụng Cây XML pháp XML Các phần tử XML Thuộc tính XML Không gian tên XML Hiển thị XML XML HttpRequest Trình phân tích cú pháp XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Trình xác thực XML XML DTD Lược đồ XML Máy chủ XML Ví dụ XML Câu hỏi XML Chứng chỉ XML

XML AJAX

AJAX Giới thiệu AJAX XMLHttp AJAX Yêu cầu AJAX Phản hồi Tệp XML AJAX PHP AJAX ASP AJAX Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

DOM XML

Giới thiệu DOM Nút DOM DOM Truy cập thông tin nút DOM Danh sách nút DOM DOM Duyệt qua DOM Điều hướng DOM Nhận giá trị DOM Thay đổi nút DOM Xóa nút DOM Thay thế nút DOM Tạo nút DOM Thêm nút DOM Sao chép nút Ví dụ về DOM

Hướng dẫn XPath

Giới thiệu XPath Các nút XPath Cú pháp XPath Trục XPath Toán tử XPath Ví dụ về XPath

Hướng dẫn XSLT

Giới thiệu XSLT Ngôn ngữ XSL XSLT Chuyển đổi XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Áp dụng XSLT trên XSLT máy khách trên máy chủ XSLT Chỉnh sửa XML Ví dụ về XSLT

Hướng dẫn XQuery

Giới thiệu XQuery Ví dụ về XQuery XQuery FLWOR XQuery HTML Thuật ngữ XQuery Cú pháp XQuery XQuery Thêm XQuery Chọn các hàm XQuery

DTD XML

Giới thiệu DTD Các khối xây dựng DTD Các phần tử DTD Thuộc tính DTD Các phần tử DTD và Attr Các thực thể DTD Ví dụ về DTD

Lược đồ XSD

Giới thiệu XSD XSD Cách thực hiện XSD <lược đồ> Phần tử XSD Thuộc tính XSD Hạn chế XSD Phần tử phức tạp XSD XSD XSD rỗng Chỉ phần tử XSD chỉ có văn bản XSD Chỉ báo XSD hỗn hợp XSD <any> XSD <anyAttribution> Ví dụ XSD thay thế XSD

Các kiểu dữ liệu XSD

Chuỗi XSD XSD Ngày/giờ XSD Số XSD Tham chiếu XSD linh tinh

Dịch vụ web

Dịch vụ XML XML WSDL XML SOAP XML RDF XML RSS

Người giới thiệu

Các loại nút DOM DOM Nút DOM NodeList DOM NamedNodeMap Tài liệu DOM Phần tử DOM Thuộc tính DOM DOM Văn bản DOM CDATA DOM Nhận xét DOM XMLHttpRequest Trình phân tích cú pháp DOM Các phần tử XSLT Hàm XSLT/XPath

Một ví dụ XSD


Chương này sẽ trình bày cách viết một Lược đồ XML. Bạn cũng sẽ biết rằng một lược đồ có thể được viết theo nhiều cách khác nhau.


Một tài liệu XML

Chúng ta hãy xem tài liệu XML có tên "shiporder.xml" này:

<?xml version="1.0" encoding="UTF-8"?>

<shiporder orderid="889923"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
  <orderperson>John Smith</orderperson>
  <shipto>
    <name>Ola Nordmann</name>
    <address>Langgt 23</address>
    <city>4000 Stavanger</city>
    <country>Norway</country>
  </shipto>
  <item>
    <title>Empire Burlesque</title>
    <note>Special Edition</note>
    <quantity>1</quantity>
    <price>10.90</price>
  </item>
  <item>
    <title>Hide your heart</title>
    <quantity>1</quantity>
    <price>9.90</price>
  </item>
</shiporder>

Tài liệu XML ở trên bao gồm phần tử gốc, "shiporder", chứa thuộc tính bắt buộc được gọi là "orderid". Phần tử "shiporder" chứa ba phần tử con khác nhau: "người đặt hàng", "shipto" và "item". Phần tử "mục" xuất hiện hai lần và chứa phần tử "tiêu đề", phần tử "ghi chú" tùy chọn, phần tử "số lượng" và phần tử "giá".

Dòng trên: xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" cho trình phân tích cú pháp XML biết rằng tài liệu này phải được xác thực dựa trên một lược đồ. Dòng: xsi:noNamespaceSchemaLocation="shiporder.xsd" chỉ định Lược đồ nằm ở ĐÂU (ở đây nó nằm trong cùng thư mục với "shiporder.xml").



Tạo một lược đồ XML

Bây giờ chúng ta muốn tạo một lược đồ cho tài liệu XML ở trên.

Chúng tôi bắt đầu bằng cách mở một tệp mới mà chúng tôi sẽ gọi là "shiporder.xsd". Để tạo lược đồ, chúng ta chỉ cần làm theo cấu trúc trong tài liệu XML và xác định từng phần tử khi chúng ta tìm thấy nó. Chúng ta sẽ bắt đầu với khai báo XML tiêu chuẩn, theo sau là phần tử xs:schema xác định một lược đồ:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">
...
</xs:schema>

Trong lược đồ ở trên, chúng tôi sử dụng không gian tên tiêu chuẩn (xs) và URI được liên kết với không gian tên này là định nghĩa ngôn ngữ Lược đồ, có giá trị tiêu chuẩn là https://www.w3.org/2001/XMLSchema.

Tiếp theo, chúng ta phải xác định phần tử "shiporder". Phần tử này có một thuộc tính và nó chứa các phần tử khác, do đó chúng tôi coi nó là một kiểu phức tạp. Các phần tử con của phần tử "shiporder" được bao quanh bởi phần tử xs:sequence xác định trình tự có thứ tự của các phần tử phụ:

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      ...
    </xs:sequence>
  </xs:complexType>
</xs:element>

Sau đó, chúng ta phải định nghĩa phần tử "orderperson" là một kiểu đơn giản (vì nó không chứa bất kỳ thuộc tính hoặc phần tử nào khác). Loại (xs:string) có tiền tố không gian tên được liên kết với Lược đồ XML cho biết loại dữ liệu lược đồ được xác định trước:

<xs:element name="orderperson" type="xs:string"/>

Tiếp theo, chúng ta phải xác định hai phần tử thuộc loại phức tạp: "shipto" và "item". Chúng ta bắt đầu bằng cách xác định phần tử "shipto":

<xs:element name="shipto">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="address" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="country" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Với các lược đồ, chúng ta có thể xác định số lần xuất hiện có thể có của một phần tử với các thuộc tính maxOccurs và minOccurs. maxOccurs chỉ định số lần xuất hiện tối đa cho một phần tử và minOccurs chỉ định số lần xuất hiện tối thiểu cho một phần tử. Giá trị mặc định cho cả maxOccurs và minOccurs là 1!

Bây giờ chúng ta có thể định nghĩa phần tử "item". Phần tử này có thể xuất hiện nhiều lần bên trong phần tử "shiporder". Điều này được chỉ định bằng cách đặt thuộc tính maxOccurs của phần tử "item" thành "không bị chặn", có nghĩa là có thể có nhiều lần xuất hiện của phần tử "item" như tác giả mong muốn. Lưu ý rằng phần tử "ghi chú" là tùy chọn. Chúng tôi đã chỉ định điều này bằng cách đặt thuộc tính minOccurs về 0:

<xs:element name="item" maxOccurs="unbounded">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="title" type="xs:string"/>
      <xs:element name="note" type="xs:string" minOccurs="0"/>
      <xs:element name="quantity" type="xs:positiveInteger"/>
      <xs:element name="price" type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Bây giờ chúng ta có thể khai báo thuộc tính của phần tử "shiporder". Vì đây là thuộc tính bắt buộc nên chúng tôi chỉ định use="required".

Lưu ý: Việc khai báo thuộc tính phải luôn ở cuối cùng:

<xs:attribute name="orderid" type="xs:string" use="required"/>

Đây là danh sách đầy đủ của tệp lược đồ có tên "shiporder.xsd":

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="item" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

Chia lược đồ

Phương pháp thiết kế trước đó rất đơn giản nhưng có thể khó đọc và bảo trì khi tài liệu phức tạp.

Phương pháp thiết kế tiếp theo dựa trên việc xác định tất cả các thành phần và thuộc tính trước tiên, sau đó tham chiếu đến chúng bằng thuộc tính ref.

Đây là thiết kế mới của tệp lược đồ ("shiporder.xsd"):

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>

<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- definition of complex elements -->
<xs:element name="shipto">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="name"/>
      <xs:element ref="address"/>
      <xs:element ref="city"/>
      <xs:element ref="country"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="item">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="title"/>
      <xs:element ref="note" minOccurs="0"/>
      <xs:element ref="quantity"/>
      <xs:element ref="price"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="orderperson"/>
      <xs:element ref="shipto"/>
      <xs:element ref="item" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute ref="orderid" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

Sử dụng các loại được đặt tên

Phương pháp thiết kế thứ ba xác định các lớp hoặc kiểu, cho phép chúng ta sử dụng lại các định nghĩa phần tử. Điều này được thực hiện bằng cách đặt tên cho các phần tử simpleTypes và complexTypes, sau đó trỏ đến chúng thông qua thuộc tính type của phần tử.

Đây là thiết kế thứ ba của tệp lược đồ ("shiporder.xsd"):

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

<xs:simpleType name="stringtype">
  <xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="inttype">
  <xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:simpleType name="dectype">
  <xs:restriction base="xs:decimal"/>
</xs:simpleType>

<xs:simpleType name="orderidtype">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9]{6}"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="shiptotype">
  <xs:sequence>
    <xs:element name="name" type="stringtype"/>
    <xs:element name="address" type="stringtype"/>
    <xs:element name="city" type="stringtype"/>
    <xs:element name="country" type="stringtype"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="itemtype">
  <xs:sequence>
    <xs:element name="title" type="stringtype"/>
    <xs:element name="note" type="stringtype" minOccurs="0"/>
    <xs:element name="quantity" type="inttype"/>
    <xs:element name="price" type="dectype"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="shipordertype">
  <xs:sequence>
    <xs:element name="orderperson" type="stringtype"/>
    <xs:element name="shipto" type="shiptotype"/>
    <xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
  </xs:sequence>
  <xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

</xs:schema>

Phần tử hạn chế chỉ ra rằng kiểu dữ liệu được lấy từ kiểu dữ liệu không gian tên Lược đồ XML của W3C. Vì vậy, đoạn sau có nghĩa là giá trị của phần tử hoặc thuộc tính phải là giá trị chuỗi:

<xs:restriction base="xs:string">

Phần tử hạn chế thường được sử dụng nhiều hơn để áp dụng các hạn chế cho các phần tử. Nhìn vào các dòng sau từ lược đồ trên:

<xs:simpleType name="orderidtype">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9]{6}"/>
  </xs:restriction>
</xs:simpleType>

Điều này chỉ ra rằng giá trị của phần tử hoặc thuộc tính phải là một chuỗi, nó phải có chính xác sáu ký tự liên tiếp và các ký tự đó phải là số từ 0 đến 9.


×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .