thành phần XML Schema

Định nghĩa và cách sử dụng

element định nghĩa một thành phần.

Thông tin thành phần

số lần xuất hiện số lượng thành phần được định nghĩa trong cấu trúc.
thành phần cha schema、choice、all、sequence
nội dung simpleType、complexType、key、keyref、unique

cú pháp

<element
id=ID 
name=NCName
ref=QName
type=QName
substitutionGroup=QName
default=string
fixed=string
form=qualified|unqualified
maxOccurs=nonNegativeInteger|unbounded
minOccurs=số nguyên dương không
nillable=true|false
abstract=true|false 
block=(#all|danh sách của (extension|restriction))
final=(#all|danh sách của (extension|restriction))
bất kỳ thuộc tính nào
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(? Ký hiệu được sử dụng trong phần tử element, phần tử này có thể xuất hiện 0 lần hoặc 1 lần, * ký hiệu được sử dụng cho phần tử có thể xuất hiện 0 lần hoặc nhiều lần.)

Thuộc tính

id

Tùy chọn. Quy định ID duy nhất của phần tử.

name

Tùy chọn. Quy định tên của phần tử. Nếu phần tử cha là phần tử schema, thì thuộc tính này là bắt buộc.

ref

Tùy chọn. Tham chiếu đến phần tử khác. Thuộc tính ref có thể chứa tiền tố tên không gian. Nếu phần tử cha là phần tử schema, thì không sử dụng thuộc tính này.

type

Tùy chọn. Quy định tên của loại dữ liệu trong suốt, hoặc quy định tên của phần tử simpleType hoặc complexType.

substitutionGroup

Tùy chọn. Quy định tên của phần tử có thể thay thế phần tử này. Phần tử đó phải có cùng loại hoặc là loại được chiết xuất từ loại phần tử đã chỉ định.

Nếu phần tử cha không phải là phần tử schema, thì không thể sử dụng thuộc tính này.

default

Tùy chọn. Đặt giá trị mặc định cho phần tử (chỉ sử dụng khi nội dung của phần tử là loại dữ liệu đơn giản hoặc textOnly).

fixed

Tùy chọn. Đặt giá trị cố định cho phần tử (chỉ sử dụng khi nội dung của phần tử là loại dữ liệu đơn giản hoặc textOnly).

form

Tùy chọn. Hình thức của phần tử. Giá trị mặc định là giá trị của thuộc tính elementFormDefault của phần tử schema chứa thuộc tính này. Giá trị này phải là một trong các chuỗi sau: "qualified" hoặc "unqualified".

Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.

  • Nếu giá trị này là "unqualified", thì không cần sử dụng tiền tố tên không gian để xác định phần tử này.
  • Nếu giá trị này là "qualified", thì phải sử dụng tiền tố tên không gian để xác định phần tử này.

maxOccurs

Tùy chọn. Quy định số lần tối đa mà element có thể xuất hiện trong phần tử cha. Giá trị này có thể là một số nguyên dương hoặc bằng không. Nếu không muốn đặt bất kỳ giới hạn nào cho số lần tối đa, hãy sử dụng chuỗi "unbounded". Giá trị mặc định là 1.

Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.

minOccurs

Tùy chọn. Quy định số lần tối thiểu mà phần tử element có thể xuất hiện trong phần tử cha. Giá trị có thể là số nguyên dương hoặc bằng không. Giá trị mặc định là 1.

Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.

nillable

Tùy chọn. Chỉ định có thể phân phối giá trị mặc định là không (nil) cho phần tử này hay không. Điều này áp dụng cho nội dung của phần tử và không phải là thuộc tính của phần tử. Giá trị mặc định là false.

Nếu nillable là true, sẽ cho phép phần tử của phần tử này có thể đặt thuộc tính nil là true. Thuộc tính nil được định nghĩa là một phần của không gian tên XML cú pháp của phần tử.

Ví dụ, đoạn dưới định nghĩa một phần tử đơn lẻ, đồng thời đặt nillable là true.

<xs:element name="myDate" type="xs:date" nillable="true"/>

Dưới đoạn sử dụng phần tử này và có giá trị mặc định là không (nil thuộc tính được đặt là true).

<myDate xsi:nil="true"></myDate>

abstract

Tùy chọn. Chỉ định phần tử có thể được sử dụng trong tài liệu mẫu hay không. Nếu giá trị là true, phần tử này không thể xuất hiện trong tài liệu mẫu. Ngược lại, thuộc tính substitutionGroup chứa phần tử có tên định danh (QName) khác của phần tử này phải xuất hiện ở vị trí của phần tử này. Nhiều phần tử có thể tham chiếu đến phần tử này trong thuộc tính substitutionGroup. Giá trị mặc định là false.

block

Tùy chọn. Kiểu phân chi. Thuộc tính block chặn phần tử có loại phân chi được chỉ định không được sử dụng để thay thế phần tử này. Giá trị có thể chứa #all hoặc một danh sách, danh sách này là tập con của extension, restriction hoặc substitution:

  • extension - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc mở rộng.
  • restriction - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc giới hạn.
  • substitution - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc thay thế.
  • #all - Chặn tất cả các phần tử được phân chi ra thay thế phần tử này.

final

Tùy chọn. Đặt giá trị mặc định của thuộc tính final trên phần tử element. Nếu phần tử cha không phải là phần tử schema, thì không thể sử dụng thuộc tính này. Giá trị có thể chứa #all hoặc một danh sách, danh sách này là tập con của extension hoặc restriction:

  • extension - Giải thích để các phần tử được dẫn xuất có mở rộng không được sử dụng để thay thế phần tử này
  • restriction - Giải thích để các phần tử được dẫn xuất có giới hạn không được sử dụng để thay thế phần tử này
  • #all - Giải thích để các phần tử được dẫn xuất không được sử dụng để thay thế phần tử này

bất kỳ thuộc tính nào

Tùy chọn. Định nghĩa bất kỳ thuộc tính nào có không gian tên không phải schema.

Thực tế

Ví dụ 1

Ví dụ sau là một schema có bốn phần tử đơn giản: "fname", "lname", "age" và "dateborn", loại là string, nonNegativeInteger và date:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="dateborn" type="xs:date"/>
</xs:schema>

Ví dụ 2

Ví dụ sau là một schema có phần tử loại phức tạp "note" với bốn phần tử đơn giản: "to", "from", "heading" và "body":

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

Ví dụ 3

Ví dụ này giống với ví dụ 2, nhưng trong ví dụ này, chúng ta chọn sử dụng thuộc tính ref để tham chiếu tên phần tử:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="to"/>
      <xs:element ref="from"/>
      <xs:element ref="heading"/>
      <xs:element ref="body"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:schema>