XML: Phần tử <!ATTLIST>


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Phần tử <!ATTLIST> dùng để định nghĩa kiểu tư liệu của các thuộc tính cho một phần tử trong tài liệu XML. Chúng ta dùng cú pháp sau:

<!ATTLIST element-name attribute-name attribute-type default-value>

Trong đó:

o element-name là tên của một phần tử cần định nghĩa thuộc tính.

o attribute-name là tên thuộc tính cần định nghĩa.

attribute-type kiểu của thuộc tính. Có thể nhận một trong các giá trị sau:

Kiểu

Mô tả

CDATA

Cho biết thuộc tính này chỉ có thể chứa kiểu dữ liệu ký tự

(en1|en2|..)

Danh sách các giá trị mà thuộc tính có thể được gán

ID

Cho biết thuộc tính này là một ID, tức là các giá trị của thuộc

 

tính này không được trùng nhau và phải bắt đầu bởi một chữ cái

IDREF

Cho biết giá trị của thuộc tính này phải là một trong các giá trị của thuộc tính ID của các phần tử khác

IDREFS

Cho biết giá trị của thuộc tính này phải là các giá trị của các thuộc tính có kiểu ID

NMTOKEN

Cho biết giá trị của thuộc tính là các giá trị hợp với quy tắc đặt tên của phần tử của tài liệu XML

NMTOKENS

Cũng giống như NMTOKEN nhưng nó cho phép chứa nhiều NMTOKEN

ENTITY

Cho biết thuộc tính này nhận giá trị là một tên tham chiếu của thực thể

ENTITIES

Cho biết thuộc tính này nhận giá trị là các tên tham chiếu của thực thể và cách nhau bởi khoản trắng

NOTATION Tên của một ký hiệu
xml: Giá trị xml được xác định trước

o default-value thông tin về giá mặc định trị của thuộc tính này. Nó có thể nhận một trong các giá tị sau:

Giá trị

Mô tả

value

value là một giá trị mặc định nào đó cho giá trị này (ví dụ “CNTT”)

#REQUIRED

Chỉ định là không có giá trị mặc định cho thuộc tính này, nhưng khi sử dụng là phải khởi tạo

#IMPLIED

Chỉ định là không có giá trị mặc định cho thuộc tính này, và thuộc tính này không cần dùng đến

#FIXED value

Chỉ định thuộc tính này chỉ mang duy nhất giá trị value này

Chúng ta có thể định nghĩa một phần tử có nhiều thuộc tính theo cú pháp sau:

<!ATTLIST element-name

attribute-name_1 attribute-type_1 default-value_1

attribute-name_2 attribute-type_2 default-value_2

...

attribute-name_n attribute-type_n default-value_n>

Ví dụ 1:

Giả sử chúng ta có file att.dtd với nội dung sau:

<!ELEMENT attributes (#PCDATA)>

<!ATTLIST attributes  aaa CDATA #REQUIRED bbb CDATA #IMPLIED>

File XML chúng ta viết như sau:

<?xml version="1.0"?>

<!DOCTYPE attributes SYSTEM "att.dtd">

<attributes aaa="#d1" bbb="*~*">Text</attributes>

Ví dụ 2:

Giả sử chúng ta có file att.dtd với nội dung sau:

<!ELEMENT attributes (#PCDATA)>

<!ATTLIST attributes aaa CDATA #IMPLIED

bbb NMTOKEN #REQUIRED

ccc NMTOKENS #REQUIRED>

File XML chúng ta viết như sau:

<?xml version="1.0"?>

<!DOCTYPE attributes SYSTEM "att.dtd">

<attributes aaa="#d1" bbb="a1:12" ccc=" 3.4 div   -4"/>

Nếu chúng ta viết như sau sẽ không hợp quy tắc vì kiểu NMTOKEN và NMTOKEN không chấp nhận ký tự # :

<?xml version="1.0"?>

<!DOCTYPE attributes SYSTEM "att.dtd">

<attributes aaa="#d1" bbb="#d1" ccc="#d1"/>

Ví dụ 3:

Giả sử chúng ta có file att.dtd với nội dung sau:

<!ELEMENT XXX (AAA+ , BBB+ , CCC+)>

<!ELEMENT AAA (#PCDATA)>

<!ELEMENT BBB (#PCDATA)>

<!ELEMENT CCC (#PCDATA)>

<!ATTLIST AAA id ID #REQUIRED> <!ATTLIST BBB code ID #IMPLIED list NMTOKEN #IMPLIED>

<!ATTLIST CCC X ID #REQUIRED Y NMTOKEN #IMPLIED>

File XML chúng ta viết như sau:

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd"> <XXX>

<AAA id="L12"/>

<BBB code="QW" list="L12"/> <CCC X="x-0" Y="QW" /> <CCC X="x-1" Y="QW" />

</XXX>

Nếu chúng ta viết như sau sẽ không hợp quy tắc vì phần tử CCC có thuộc tính X có kiểu là ID nên phải là duy nhất.

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd"> <XXX>

<AAA id="L12"/>

<BBB code="QW" list="L12"/> <CCC X="ZA" Y="QW" /> <CCC X="ZA" Y="QW" />

</XXX>

Nếu chúng ta viết như sau sẽ không hợp quy tắc vì phần tử AAA và CCC có thuộc tính có kiểu là ID nên không được có giá trị giống nhau.

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd"> <XXX>

<AAA id="L12"/>

<BBB code="QW" list="L12"/> <CCC X="L12" Y="QW" />

</XXX>

Ví dụ 4:

Giả sử chúng ta có file att.dtd với nội dung sau:

<!ELEMENT XXX (AAA+ , BBB+, CCC+, DDD+)>

<!ELEMENT AAA (#PCDATA)>

<!ELEMENT BBB (#PCDATA)>

<!ELEMENT CCC (#PCDATA)>

<!ELEMENT DDD (#PCDATA)>

<!ATTLIST AAA mark ID #REQUIRED>

<!ATTLIST BBB id ID #REQUIRED>

<!ATTLIST CCC ref IDREF #REQUIRED>

<!ATTLIST DDD ref IDREFS #REQUIRED>

File XML chúng ta viết như sau là hợp quy tắc:

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd">

<XXX>

<AAA mark="a1"/>

<AAA mark="a2"/>

<AAA mark="a3"/>

<BBB id="b001" />

<CCC ref="a3" />

<DDD ref="a1 b001 a2" />

</XXX>

Nếu chúng ta viết như sau sẽ không hợp quy tắc vì phần tử DDD có thuộc tính ref có kiểu là IDREFS, trong khi đó chúng ta lại gán giá trị cho thuộc tính của phần tử này là ref=”a1 b001 a2” trong khi đó b001 không phải là giá trị của một ID nào cả.

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd">

<XXX>

<AAA mark="a1"/>

<AAA mark="a2"/>

<BBB id="b01" />

<CCC ref="a3" />

<DDD ref="a1 b001 a2" />

</XXX>

Ví dụ 5:

Giả sử chúng ta có file att.dtd với nội dung sau:

<!ELEMENT XXX (AAA+, BBB+)>

<!ELEMENT AAA (#PCDATA)>

<!ELEMENT BBB (#PCDATA)>

<!ATTLIST AAA     true ( yes | no ) #REQUIRED>

<!ATTLIST BBB month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>

File XML chúng ta viết như sau là hợp quy tắc:

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd"> <XXX>

<AAA true="yes"/> <AAA true="no"/> <AAA true="yes"/> <BBB month="8" /> <BBB month="2" /> <BBB month="12" />

</XXX>

Nếu chúng ta viết như sau sẽ không hợp quy tắc vì phần tử AAA và phần tử BBB có thuộc tính true và month có kiểu liệt kê, trong khi đó chúng ta gán giá trị cho hai thuộc tính này ngoài giá trị đã liệt kê.

<?xml version="1.0"?>

<!DOCTYPE XXX SYSTEM "att.dtd">

<XXX>

<AAA true="yes"/>

<AAA true="no"/>

<AAA true="maybe"/>

<BBB month="8" />

<BBB month="2" />

<BBB month="16" />

</XXX>

» Tiếp: Thực thể tổng quát
« Trước: Phần tử <!ELEMENT>
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!