XML: Thực thể tham số

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Thực thể tham số khác với thực thể tổng quát ở chỗ là nó cho phép tham chiếu đến nó ngay trong bản thân các khai báo DTD và vùng hoạt động của nó chỉ nằm trong vùng khai báo các DTD. Mục đích của việc sử dụng thực thể tham số là để tránh các khai báo lặp lại khi định nghĩa DTD và giúp cho chúng ta dễ dàng thay đổi.

Tương tự như thực thể tổng quát, thực thể tham số cũng có hai loại đó là thực thể tham số ngoại và thực thể tham số nội.

Thực thể tham số nội

Thực thể tham số nội là thực thể được định nghĩa ngay trên DTD của tài liệu XML. Định nghĩa thực thể tham số chúng ta dùng cú pháp sau:

<!ENTITY % entity-name “entity-vale”>

Trong đó:

% là tham số bắt buộc.

entity-name là tên của thực thể tham số cần định nghĩa entity-value là giá trị cần gán cho entity-name.

Ví dụ:

Có sử dụng thực thể tham số nội

Không sử dụng thực thể tham số nội

<?xml version="1.0"?>

<!DOCTYPE author [

<!ENTITY  name "Open source software">

<!ENTITY name-group "&name; Group">

<!ENTITY % EL "<!ELEMENT author (#PCDATA)>"

>

%EL;

]>

<author>&name-group;</author>

<?xml version="1.0"?>

<!DOCTYPE author [

<!ENTITY name1 "Open source software">

<!ENTITY name-group "&name1; Group">

<!ELEMENT author (#PCDATA)>

>

]>

<author>&name-group;</author>

Thực thể tham số ngoại

Thực thể tham số ngoại là thực thể được định nghĩa và tham chiếu từ một nguồn bên ngoài. Định nghĩa thực thể tham số ngoại chúng ta viết theo một trong hai cú pháp sau:

<!ENTITY % entity-name SYSTEM "URI/URL">

Hoặc:

<!ENTITY % entity-name PUBLIC FPI "URI/URL">

Trong đó:

Từ khóa SYSTEM cho biết đây là thực thể tham số ngoại riêng.

Từ khóa PUBLIC cho biết đây là thực thể tham số ngoại chung.

FPI (Formal Public Identifier) là một định danh chung hình thức (đã trình bày ở phần trước).

URI/URL là địa chỉ của khối giữ liệu cần gán cho entity-name.

Ví dụ:

Giả sử chúng ta có file hocsinh.dtd như sau:

<!ELEMENT HOCSINH (HOTEN, NGAYSINH, LOP)>

<!ELEMENT HOTEN (#PCDATA)>

<!ELEMENT NGAYSINH (#PCDATA)>

<!ELEMENT LOP (#PCDATA)>

Bây giờ chúng ta viết file tài liệu XML có tên test.xml với thực thể tham số ngoại như sau:

<?xml version=”1.0”?>

<!DOCTYPE HOCSINH [

<!ENTITY % hs SYSTEM “hocsinh.dtd”> %hs;

]>

<HOSCINH>

<HOTEN>Le Van A</HOTEN>

<NGAYSINH>26-06-79</NGAYSINH>

<LOP>6A3</LOP>

</HOSCINH>

Viết <!ENTITY % hs SYSTEM “hocsinh.dtd”> có nghĩa là file hocsinh.dtd nằm cùng thư mục với file test.xml.

Nếu file hocsinh.dtd đặt tại địa chỉ http://hs.com.vn/hocsinh.dtd thì chúng ta viết lại dòng đó như sau:

<!ENTITY % hs SYSTEM “http://hs.com.vn/hocsinh.dtd”>

Chú ý: Trước khi có được điều lưu ý thì chúng ta hãy xem ví dụ sau:

<!ENTITY % mathml-colon        ''>

<!ENTITY % mathml-prefix       ''>

<!ENTITY % mathml-exp           '%mathml-prefix;%mathml-colon;exp' >

<!ENTITY % mathml-abs            '%mathml-prefix;%mathml-colon;abs' >

<!ENTITY % mathml-arg           '%mathml-prefix;%mathml-colon;arg' >

<!ENTITY % mathml-real          '%mathml-prefix;%mathml-colon;real' >

<!ENTITY % mathml-imaginary '%mathml-prefix;%mathml-colon;imaginary'> 

<!ELEMENT %mathml-imaginary; (#PCDATA)>

Đây là một DTD có định nghĩa các thực thể tham số, chúng ta thấy các thực thể tham số có thể tham chiếu lẫn nhau theo một trình tự từ trên xuống và có thể được tham chiếu ngay trong một định nghĩa element. Tuy nhiên để cho các cách tham chiếu này có thể hoạt động được thì bắt buộc nó phải được định nghĩa độc lập từ một file DTD và được tham chiếu vào tài liệu XML dưới dạng DTD tham chiếu ngoại.

<?xml version=”1.0”>

<!DOCTYPE exp SYSTEM “exp.dtd” [

]

<exp> imaginary </exp

» Tiếp: Xpath (XML Path Language)
« Trước: Thực thể tổng quát
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!