Professional Documents
Culture Documents
Các thẻ tag , , , là các thẻ này được các trình duyệt xử
lý và chỉ ra cách hiển thị dữ liệu như thế nào trên trình
duyệt.
1.1 Tìm hiểu về ngôn ngữ đánh dấu
HTML được hình thành từ một ngôn ngữ đánh dấu Standard
Generalized Markup Language (SGML)và thật ra nó là một áp
dụng của SGML.
SGML được phát minh bởi Ed Mosher, Ray Lorie và Charles F.
Goldfarb của nhóm IBM research vào năm 1969, khi con người
đặt chân lên mặt trăng. Lúc đầu nó có tên là Generalized Markup
Language (GML), và được thiết kế để dùng làm meta-language,
một ngôn ngữ được dùng để diễn tả các ngôn ngữ khác - văn
phạm, ngữ vựng của chúng v.v... Năm 1986, SGML được cơ
quan ISO (International Standard Organisation) thu nhận
(adopted) làm tiêu chuẩn để lưu trữ và trao đổi dữ liệu. Khi Tim
Berners-Lee triển khai HyperText Markup Language - Bài giảng
Công Nghệ XML Trang 2 HTML để dùng cho các trang Web hồi
đầu thập niên 1990, ông ta cứ nhắc nhở rằng HTML là một áp
dụng của SGML.
1.1 Tìm hiểu về ngôn ngữ đánh dấu
1.2 Sự ra đời XML
Mỗi ngôn ngữ trước XML có một số nhược điểm như:
GML và SGML không được thiết phù hợp cho việc trao
chuyển dữ liệu trên web.
HTML được thiết kế cho mục đích hiển thị dữ liệu như
thế nào trên trình duyệt.
>> XML ra đời để khắc phục các nhược điểm của các ngôn
ngữ trước.
1.2 Sự ra đời XML
Điểm khác nhau giữa XML và HTML:
1.3 Đặc trưng & ưu điểm XML
Đặc trưng XML:
XML là những chữ cái viết tắt của cụ từ eXtensible Markup
Language
XML dùng để phục vu ̣cho viêc mô tả dữ liệu (thông tin lưu
trữ bao gồm những gì, lưu trữ ra sao) để các hê ̣thống khác
nhau có thể đoc và sử dụng những thông tin này môt c ̣ách
thuân tiêṇ
Các thẻ (tag) của XML thường không đươc đ ̣inh nghĩa trước
mà chúng đươc tạo ra theo quy ước của người, (hoăc Chương
trình) tao ra XML theo những quy ước của chính ho
̣XML sử duṇg các khai báo kiểu dữ liêụ DTD (Document Type
Definition) hay lươc đ ̣ ồ Schema để mô tả dữliêụ .
1.3 Đặc trưng & ưu điểm XML
Ưu điểm của XML:
XML có thể tách rời dữ liệu khỏi HTML, bởi XML nó có tính độc lập.
Khi HTML được dùng để hiển thị dữ liệu, dữ liệu được lưu bên trong
HTML. Với XML, dữ liệu có thể được lưu bên ngoài HTML. Điều này
đảm bảo rằng những thay đổi dữ liệu trong file XML sẽ không làm ảnh
hưởng tới cách hiển thị được xử lý cài đặt trên file HTML.
Dữliêụ đôc ̣ lâp l ̣ à ưu điểm chính của XML. Do XML chỉ dùng để mô tả
dữliêu ̣ bằng daṇ g text nên tất cả các chương trình đều có thể đoc đư ̣ ơc
XML. ̣
Dễ dàng đọc và phân tích dữliêu, nh ̣ ờ ưu điểm này mà XML thường
đươc ḍ ùng để trao đổi dữliệu giữa các hê ṭ hống khác nhau.
Dễdàng để tao 1 ̣ file XML
Lưu trữcấu hình cho web site.
Sử dụng cho phương thức Remote Procedure Calls (RPC) phuc ̣vu ̣web
service.
XML được dùng để tạo ra ngôn ngữ đánh dấu mới như cho các thiết bị
không dây (Wireless Markup Language)
1.4 Giới thiệu cấu trúc tài liệu XML
Một ví dụ về cấu trúc của một file XML
1.4 Giới thiệu cấu trúc tài liệu
XML
Một tài liệu XML băt đầu bằng khai báo XML để định nghĩa
phiên bản XML và bộ có thể thêm bộ mã hóa được dùng trong tài
liệu. Khai báo XML:
Cho biết tài liệu dùng phiên bản XML 1.0 và sử dụng bộ mã hóa
ký tự UTF-8 thông qua 2 thuộc tính version và encoding.
Tham số version: Khai báo về phiên bản của định chuẩn XML
đuợc sử dụng Tài liệu XML thuộc đỉnh chuẩn 1.0
Tham số encoding: Khai báo về cách mã hóa các ký tự
trong tài liệu
Tài liệu XML sử dụng cách mã hóa Unicode ký hiệu utf-8
1.4 Giới thiệu cấu trúc tài liệu XML
Tham số standalone: Khai báo về liên kết của tài liệu
XML và các tài liệu khác. Tham số này chỉ có 2 giá trị
hợp lệ là “yes”, “no”. Giá trị định sẳn là “no” Tài liệu
XML có liên kết với các tài liệu khác
1.4 Giới thiệu cấu trúc tài liệu XML
Tất cả dữ liệu trong file XML phải được nằm trong 1
phần tử, phần tử là đơn vị cơ bản để lưu trữ dữ liệu của
bạn. Các phần tử luôn luôn bắt đầu bằng 1 thẻ mở
<note>và kết thúc bằng 1 thẻ đóng </note> .
Trong ví dụ trên chúng ta đã tạo ta một phần tử mới
hoàn toán <note>. Và bên trong phần tử này ta có các
phần tử con như <to> , <from>, <here> , <body> .
Như bạn thấy, chúng ta có thê tự đặt tên các thẻ tag của
cách riêng trong tài liệu XML, đó là điểm mạnh của
XML, khả năng cho phép sáng tạo ra “dấu” của riêng
bạn.
1.4 Giới thiệu cấu trúc tài liệu XML
Giữa các thẻ đóng và mở của một phần tử bạn có thể
đặt nội dung của phần tử (nếu có). Nội dung của phần
tử có thể là 1 đoạn text hay các phần tử con. Cũng
giống như khai báo XML, các phần tử cũng có các
thuộc tính riêng. Một tài liệu XML luôn cần phần tử
gốc ngay cả khi không có phần tử hay văn bản nào
trong nó. Ở đây <note> là phần tử gốc.
Chú ý: Tài liệu XML được lưu trong tập tin có phần mở
rộng là “.xml”
1.5 Giới thiệu một số trình soạn thảo
và trình duyệt
Để tạo 1 tài liệu XML, bạn có thể sử dụng một số trình
soạn thảo văn bản như Notepad, wordpad … Ngoài ra
bạn có thể sử dụng các phần mềm chuyên dụng như
XMLWriter, Microsoft Visual Studio, Netbean …
Download phần mềm XMLwriter tại:
http://xmlwriter.net
1.5 Giới thiệu một số trình soạn thảo
và trình duyệt
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.1 Chỉ thị xử lý & chú thích
1.6.1.1 Chú thích
Như các ngôn ngữ khác, trong lâp trình thì chú thích (comment)
được tạo ra trong chương trình là cần thiết, để sau này khi đọc laị
mã lêṇh có thể hiểu mã lênh môt c ̣ách nhanh nhất, chính xác và dễ
dàng nhất. Để tao chú thích cho nôị dung trong XML ban có thể
tao ̣ chú thích theo những quy ước sau:
Chú thích trong XML bắt đầu bằng <!-- và kết thúc bằng -->
Trong nôị dung của comment không nên có ký tự“-“
Không nên đăt comment trong 1 thẻ (Thuộc giới hạn ṃở thẻ …
đóng thẻ – quy ước này ám chỉ những “thẻ con” những thẻ chỉ
có nôi dung ̣ mà không chứa các thẻ khác lồng bên trong nó) -
Không nên đăṭ comment trước dòng khai báo <?xml ?>
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.1 Chỉ thị xử lý & chú thích
1.6.1.2 Chỉ thị xử lý
Là thông tin dành cho chương trình đang sử dung file XML ̣, các
chỉ thị này được đặt trong cặp tag <? ?>. Thành phần này
không tuân theo các qui đinh của XML. Khi file XML đươc đ ̣ oc,
c ̣ ác thông tin của đối tương này sẽ đươc đọc lên và truyền cho
ứng dụng. Cú pháp như sau:
Trong đó: - PITarget: tên của ứng dụng nhân thôn ̣g tin của chỉ thị
xử lý - Instruction: nôi dung sẽ truyền cho PITarget
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.1 Chỉ thị xử lý & chú thích
1.6.1.2 Chỉ thị xử lý
Chúng ta thường thấy dòng lệnh nằm ở đầu file XML.
Cũng giống như quy ước về đăt tên cho các thẻ
(tag) trong XML, tên của thuôc tính (atributes name)
cũng phân biệt chữ hoa, thường và luôn bắt đầu bởi ký
tự hay dấu gach dướ i đồng thời không cho phép sử
dung khoảng trắng (white space). Dưới đây mô tả viêc ̣
sử dung thuộc tính bên trong 1 tag.
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.3 Thuộc tính
Để giải quyết vấn đề trên, trong XML hình thành 1 khái niêṃ
và cho phép sử dung goị là Namespace nhằm giúp cho việc
truy xuất đến các phần tử một cách tường minh trong
những trường hơp ̣ có thể gây ra trùng tên trong cùng 1 file
XML.
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.1 Định nghia ̃ không gian tên: Không gian tên là
tâp hợp các tên dùng để cho phép kết hơp với các phần
tử và thuôc tính bên trong một tài liêụ XML nhằm giải
quyết nguy cơ xung đôt về tên của các phần tử khi
thông tin đươc ̣ tổng hơp từ nhiều nguồn khác nhau,
thông qua không gian tên, trình duyệt có thể kết hợp
các file XML từ nhiều nguồn khác nhau, có thể truy
xuất đến DTD để kiểm tra cấu trúc của XML nhận
đươc ̣ có thưc sự thích họp ̣ , từ đó xác đinh đươc tính
hơp lê ̣của XML tương ứng
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.1 Định nghia ̃ không gian tên:
Tóm lai, ̣ Không gian tên được xem như là 1 kỹ thuât kết
hợp môt số tên phần tử cùng với thuôc ̣ tính thành 1 môt
nhóm, mỗi nhóm sẽ có 1 tên xác đinh. ̣ Do viêc kết hơp
giữa 2 thành phần theo cách tên_nhóm:tên_element cho
nên sẽ đảm bảo không xảy ra trường hơp trùng tên trong
XML. Tên nhóm chính là thành phần “tiền tố” (prefix)
trong tên mới. Như vâỵ, để giải quyết vấn đề xung đột về
tên vừa đề câp ̣ ở trên trong 1 cấu trúc XML hơp nhất, ta
có thể làm như sau:
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.1 Định nghia ̃ không gian tên:
Trong đó:
- nameSpacePrefix: chính là phần viết tắt đai diên cho
nameSpace được sử dung như là tiền tố (prefix) cho các tag
trong cùng nhóm
- xmlns: là thuôc ̣ tính đươc sử dung để khai báo và chỉ ra
nameSpace cần thiết sẽ áp dung ̣ trong cấu trúc XML
- URI (Uniform Resource Identifier): Chính là chuỗi ký tự mô tả
cho 1 nguồn tà i nguyên nào đó trên Internet
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.2 Cú pháp khai báo không gian tên và thuôc tính
xmlns
Ví dụ:
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.2 Cú pháp khai báo không gian tên và thuôc tính
xmlns
Việc sử dụng tiền tố (prefix) vẫn có thể xảy ra trường hợp
trùng nhau trong quá trinh ̀ xây dưṇg những cấu trúc XML
lớn, cho nên khi khai báo nameSpace thì thành phần prefix
thường sẽ đươc gắṇ với môt ̣ URI nào đó . URI thường là 1
chuỗi ký tự mô tả cho 1 đinḥ danh có thực trên internet,
thông thường URI phổ biến nhất mà moị người đều biết
đến chính là URL (Uniform Resource Location) và đương
nhiên các URL thì luôn luôn là duy nhất, chinh vì điều này
mà nameSpace điṇh nghiã theo cách này cũng trở thành
duy nhất, không thể bi ̣trùng.
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.2 Cú pháp khai báo không gian tên và thuôc tính
xmlns
1.6 Tìm hiểu các thành phần trong tài
liệu XML
1.6.6 Không gian tên
1.6.6.2 Cú pháp khai báo không gian tên và thuôc tính
xmlns
Hoăc chúng ta có thể khai báo không gian tên mặc định
(Default Namespaces) như sau mà không sử dung ̣ prefix:
1.7 Tìm hiểu về DTDs
1.7.1 DTDs là gi?̀
1.7.1.1 Khái niệm
Một DTD xác định các phần tử có thể xuất hiện trong văn bản,
thứ tự chúng xuất hiện, cách chúng được sắp xếp trong cái
khác, và các chi tiết cơ bản trong cấu trúc văn bản XML.
DTD sử dụng một cú pháp ngắn gọn khai báo chính xác những
yếu tố và tài liệu tham khảo có thể xuất hiện ở đầu trong tài
liệu XML.
DTD cũng khai báo các thực thể (Entity) có thể được sử dụng
trong tài liệu XML. DTD được bộ phân tích XML sử dụng để
kiểm tra 1 tài liệu XML là hợp lệ. Ngoài ra nó còn được dùng
để thiết lập các giá trị mặc định (default value) cho các thuộc
tính. Cấu trúc cây của tài liệu có thể được quyết định dựa trên
DTD.
1.7 Tìm hiểu về DTDs
1.7.2 Tai sao ̣ lai sử dung DTDs? ̣
Với một DTDs, mỗi tập tin XML của bạn có thể thực
hiện một mô tả của định dạng riêng của mình.
Để dễ dàng cho việc trao đổi dữ liệu, việc đưa ra các tiêu
chuẩn cho 1 tài liệu DTD, tên cũng như thứ tự các tag
hay các thuộc tính là điều cần thiết.
Cũng có thể sử dụng một DTDs để xác minh dữ liệu
riêng là hợp lệ
1.7 Tìm hiểu về DTDs
1.7.2.1 Cấu trúc DTDs và các bước tao DTDs
Cấu trúc DTDs bao gồm có 3 phần
Khai báo các phần tử (element)
Khai báo các thuộc tính ( attribute)
Khai báo các thực thể (entity)
Khai báo phần tử: khai báo phần tử gồm có tên và nôị
dung của phần tử.
Khai báo thuộc tính: khai báo thuộc tính thuôc phần tử
nào, tên thuộc tính, kiểu dữ liêu ̣ của thuộc tính và giá
tri ̣măc đ ̣inh của thuộc tính.
Khai báo thực thể: khai báo tên của thực thể, giá tri ̣của
thực thể hay vi ̣trí của giá tri ̣ thực thể.
1.7 Tìm hiểu về DTDs
1.7.2.2 Các bước xây dựng tài liệu Tao DTD bao gồm
6 bước
Khai báo tất cả các phần tử có trong XML.
Khai báo các phần tử con cho từng phần tử (nếu có).
Xác định thứ tự xuất hiện của các phần tử.
Khai báo tất cả thuôc tinh của từng phần tử (nếu có).
Khai báo kiểu dữ liêu ṿà giá tri ̣măc đ ̣ịnh cho thuôc tính.
Khai báo các thực thể (nếu có)
1.7 Tìm hiểu về DTDs
Cú pháp:
1.7 Tìm hiểu về DTDs
Ví dụ:
1.7 Tìm hiểu về DTDs
1.7.3 Phân loại DTDs
DTDs có 2 daṇg tùy thuôc ṿào vi ̣trí đặt DTDs: bên trong
file XML hay ̣ ở file .dtd bên ngoài.
Trường hợp khai báo cục bộ trong file XML. Nếu tài liệu DTD
được khai báo theo hình thức này, thì cần phải đặt các phần tử
theo cú pháp khai báo như sau:
Ví dụ:
1.7 Tìm hiểu về DTDs
1.7.3 Phân loại DTDs
- !DOCTYPE note định nghĩa nút gốc của tài liệu XML
là “note”
- !ELEMENT note định nghĩa nút gốc “note” chưa 4
phần tử con: "to, from, heading, body"
- !ELEMENT to định nghĩa phần tử con “to” có kiểu dữ
liệu là "#PCDATA“
- Tương tự cho các “!ELEMENT from”, “!ELEMENT
heading”, “!ELEMENT body”
1.7 Tìm hiểu về DTDs
1.7.3 Phân loại DTDs
Trường hợp DTD khai báo ngoài file XML, ta cần chỉ
ra tham chiếu của file XML tới file DTD cần chỉ định.
Cấu trúc khai báo như sau:
1.7 Tìm hiểu về DTDs
1.7.3 Phân loại DTDs
Trường hợp DTD khai báo ngoài file XML
File note.dtd
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.1 Khai báo phần tử
Element rỗng: <!ELEMENT element_name EMPTY>
Element chứa text dạng parsed character: <!ELEMENT
element_name (#PCDATA)>
Element chứa text dạng bất kỳ: <!ELEMENT element_name
ANY>
Element với các thẻ con, tuần tư: <!ELEMENT element_name
(child1, child2,….)>
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.1 Khai báo phần tử
Khai báo số lần xuất hiện của các thẻ con:
Chỉ có tên thẻ con: xuất hiêṇ duy nhất 1 lần
+: phải xuất hiên tối thiểu 1 lần
*: xuất hiện 0 hay nhiều lần
?: xuất hiêṇ 0 hay 1 lần
Child1|child2: hoăc ̣ child1 xuất hiên hoăc ̣ child2 xuất hiên
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.2 Khai báo thuộc tính
<!ATTLIST element_name attribute_name attribute_type
default_value>
Giá trị mặc định có thể là 1 trong các giá tri sau ̣
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.2 Khai báo thuộc tính
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.2 Khai báo thuộc tính
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.3 Khai báo thực thể Các thực thể (Entities) là các
biến hằng được định nghĩa ngắn gọn thay thế cho mỗi một
chuỗi các ký tự đặc biệt. Có 2 cách khai báo thực thể:
Khai báo thực thể cục bộ (An Internal Entity Declaration)
1.7 Tìm hiểu về DTDs
1.7.4 Các dang khai báo trong DTD
1.7.4.3 Khai báo thực thể
Chú ý: Mỗi thực thể khi được sử dụng phải gồm có 3
phần: dấu “&, tên thực thể và dấu “;”.
Khai báo tham chiếu ngoài (An External Entity
Declaration)
1.7 Tìm hiểu về DTDs
1.7.4.4 Bộ phân tích dữ liệu Tất cả dữ liệu dạng text
trong tài liệu XML đều được bộ phân tích xử lý.
Nhưng nội dung dữ liệu text bên trong phần CDATA sẽ
bị bỏ qua, không được xử lý bởi bộ phân tích.
PCDATA - Parsed Character Data Khi các phần tử XML
được phân tích xử lý, các dữ liệu dạng văn bản text nằm
giữa các tag đều được xử lý:
<message> this text is also parsed </message>
Parsed Character Data (PCDATA) là thuật ngữ được sử
dụng cho các dữ liệu văn bản dạng text mà nó sẽ được
phân tích xử lý bởi bộ XML parser.
1.7 Tìm hiểu về DTDs
1.7.4.4 Bộ phân tích dữ liệu
CDATA - (Unparsed) Character Data Thuật ngữ CDATA được
sử dụng cho các dữ liệu văn bảng dạng text mà nó không được
phân tích xử lý bởi XML parser.
Các ký tự như "<" và "&" là bất hợp lệ khi được sử dụng trong các
phần tử XML
Ký tự "<" sẽ gây ra lỗi vì bộ phân tích ngầm hiểu nó bắt đầu 1 phần
tử mới.
Ký tự "&" sẽ gây ra lỗi vì bộ phân tích này hiểu nó bắt đầu của 1 thực
thể.
Khi bạn chèn vài dòng lệnh như JavaScript mà nó chưa nhiều
ký tự "<" hoặc "&" để tránh gây ra lỗi trong trường hợp đó, ta
phải khai báo nó là kiểu CDATA. Nội dung được đặt trong
CDATA sẽ được bỏ qua, không được xử lý bởi bộ phân tích
1.7 Tìm hiểu về DTDs
1.7.4.4 Bộ phân tích dữ liệu
Cấu trúc khai báo
Một file dtd "note.dtd" được định nghĩa tương ứng với
file “note.xml” A DTD File
1.8 Tìm hiểu giản đồ XML
Với cách định nghĩa của DTD ở trên, ta thấy sẽ có phần tử gốc
“note”, và nó chứa 4 phần tử con là "to, from, heading, body"
mỗi phần tử con có kiểu dữ liệu là "#PCDATA".
Lược đồ XML sẽ được định nghĩa trong file "note.xsd" tương
ứng với nội dung dữ liệu được định nghĩa trong ("note.xml")
1.8 Tìm hiểu giản đồ XML
Lược đồ trên định nghĩa phần tử “note” có kiểu là “complex
type”, cho phép chứa các thuộc tính hoặc các phần tử khác (to,
from, heading, body). Các phần tử (to, from, heading, body) có
kiểu “simple types”, không cho phép chứa bất từ các phần tử
khác hay các thuộc tính khác.
1.8 Tìm hiểu giản đồ XML
1.8 Tìm hiểu giản đồ XML
1.8.4 Cách khai báo các phần tử, thuộc tính cho lược
đồ XML
1.8.4.1 Kiểu dữ liệu đơn giản – Simple Type
Khai báo phần tử
Định nghĩa: Các phần tử XML được khai báo thuộc kiểu simple
type chỉ có thể chưa dữ liệu dạng text và không thể chứa bất kỳ
một phần tử hay thuộc tính nào khác. Lược đồ XML hỗ trợ một số
kiểu dữ liệu như boolean, string, date, ... hoặc có thể định nghĩa
một kiểu dữ liệu mới để chỉ định.
Cấu trúc khai báo
Để định nghĩa một phần tử có kiểu Simple Type
1.8 Tìm hiểu giản đồ XML
Lược đồ XML hỗ trợ một số kiểu dữ liệu:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
1.8 Tìm hiểu giản đồ XML
Định nghĩa giá trị mặc định (Default value) & Giá trị cố
định ( Fixed value) Giá trị mặc định là giá trị được tự động
gán cho các phần tử khi mà không có giá trị nào được chỉ định
cho phần tử. Cấu trúc định nghĩa giá trị mặt định:
Giá trị cố định cũng tự động gán cho các phần tử và bạn không
thể chỉ định một giá trị khác cho phần tử. Ví dụ:
Giá trị cố định cũng được tự động gán cho thuộc tính và không
thể chỉ định một giá trị khác cho thuộc tính.Ví dụ sau định
nghĩa giá trị cố định cho thuộc tính “lang” có giá trị "EN":
<xs:attribute name=“lang” type=“xs:string”
fixed=“EN”/>
1.8 Tìm hiểu giản đồ XML
Thuộc tính bắt buộc (Required) hay tùy chọn (Optional) Mặc
định giá trị của thuộc tính là tùy chọn (optional), để chỉ định một
thuộc tính là bắt buộc (required) ta sử dụng thêm thuộc tính "use"
trong định nghĩa của thuộc tính:
Để tránh trường hợp người dùng cung cấp các dữ liệu sai,
không hợp lệ, lược đồ XML hỗ trợ cho phép hạn chế và ngăn
ngừa điều này xảy ra.
Hoặc
Chú ý: Với cách định nghĩa thứ 2, cho phép phần tử khác có thể
sử dụng kiểu dữ liệu “carType” mới được định nghĩa.
1.8 Tìm hiểu giản đồ XML
Giới hạn về định dạng dữ liệu
Để chỉ định nội dung của một phần tử XML chỉ có thể là một
chuỗi số hoặc là một chuỗi các ký tự, ta có thể định nghĩa các
khuôn mẫu dữ liệu. Ví dụ sau mô tả phần tử “letter” chỉ chấp
nhận 1 ký tự duy nhất là chữ thường (a → z):
1.8 Tìm hiểu giản đồ XML
Ví dụ sau mô tả phần tử “initials” chỉ chấp nhận các giá trị có 3
ký tự là chữ hoa (A→Z): giới hạn về định dạng dữ liệu
1.8 Tìm hiểu giản đồ XML
Ví dụ sau mô tả phần tử “initials” chỉ chấp nhận các giá trị có 3
ký tự có thể là chữ hoa (A → Z) hoặc chữ thường (a → z):
1.8 Tìm hiểu giản đồ XML
Ví dụ sau mô tả phần tử “ID chỉ chấp nhận các giá trị có 5 ký tự
số (0-9):
1.8 Tìm hiểu giản đồ XML
Ví dụ sau mô tả một phần tử “letter” chỉ chấp nhận giá trị có
kiểu là ký tự (a-z). Dấu “*” mô tả số ký từ cho phép lớn hơn
hoặc bằng 0, tức là có thể nhập hoặc không nhập giá trị cho
phần tử này.
1.8 Tìm hiểu giản đồ XML
Ví dụ sau định nghĩa phần tử “letter” với các giá trị là 1 hoặc
nhiều cặp ký tự, mỗi cặp ký tự bao gồm 1 ký tự thường và 1 ký
tự in hoa. Nếu kết quả "sToP" là hợp lệ nhưng nếu kết quả có
giá trị là “Stop" hoặc "STOP" hoặc "stop" là không hợp lệ:
1.8 Tìm hiểu giản đồ XML
Ví dụ sau mô tả phần tử “gender” chỉ chấp nhận 1 trong 2 giá
trị sau “male” hoặc “female”:
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
</xs:element>
1.8.6 Ví dụ lược đồ XML
Tạo một lược đồ XML:
Tiếp theo, định nghĩa phần tử “orderperson”
<xs:element name="orderperson" type="xs:string"/>
Tiếp tục, định nghĩa 2 phần tử kiểu hỗn hợp: "shipto" và "item".
<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>
1.8.6 Ví dụ lược đồ XML
Tạo một lược đồ XML:
Phần tử “item” được định nghĩa dưới :
<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>
1.8.6 Ví dụ lược đồ XML
Tạo một lược đồ XML:
Để chỉ định một thuộc tính bắt buộc phải được định nghĩa, có thể
khai báo theo cấu trúc như sau. Thuộc tính "shiporder" được thiệt
lập giá trị use="required". Chú ý: Khai báo của thuộc tính phải
được đặt sau cùng.
<xs:attribute name="orderid" type="xs:string" use="required"/>
1.8.6 Ví dụ lược đồ XML
Tách lược đồ XML Cách khai báo dưới dây, cho phép tách riêng
giữa phần lược đồ và nội dung định nghĩa file xml trở nên tách
riêng, dễ dàng cho việc xử lý.
<!-- 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"/>
1.8.6 Ví dụ lược đồ XML
Tách lược đồ XML
<!-- 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
1.8.6 Ví dụ lược đồ XML
Tách lược đồ XML
<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>
1.8.6 Ví dụ lược đồ XML
Tách lược đồ XML
<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>
1.8.7 Định nghĩa kiểu dữ liệu người
dùng
Với 2 cách định nghĩa trên các kiểu dữ liệu giống nhau được
định nghĩa nhiều lần, điều này làm cho chương trình trở nên dài
và phức tạp hơn. Với các thẻ tag <xs:simpleType> và
<xs:complexTypes> cho phép người dùng định nghĩa các kiểu
dữ liệu mới, cho phép người dùng tái sử dụng các kiểu dữ liệu
nhiều lần.
<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
1.8.7 Định nghĩa kiểu dữ liệu người
dùng
<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>
1.8.7 Định nghĩa kiểu dữ liệu người
dùng
<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>
1.8.7 Định nghĩa kiểu dữ liệu người
dùng
Thẻ tag <xs:restriction> được sử dụng nhằm giới hạn
giá trị của các phần tử. Xem ví dụ sau định nghĩa phần
tử “orderidtype” có những ràng buộc dữ liệu:
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
Giá trị được chỉ định cho phần tử hoặc thuộc tính
phải là string, và nó phải có đủ 6 ký tự và mỗi ký tự là
số từ 0-9.