Chƣơng 2 : NGễN NGỮ ĐỊNH DẠNG MỞ RỘNG XML
2.4. Lƣợc đồ XML và khụng gian tờn
2.4.2. Quy định kiểu đơn giản và kiểu phức tạp
Trong lƣợc đồ XML, tài liệu chia thành hai kiểu nội dung chớnh: thành phần thuộc kiểu đơn giản (simple types) và thành phần thuộc kiểu phức tạp (comples types).
Vấn đề đặt ra ở đõy là làm cỏch phõn biệt thành phần nào trong tài liệu cú kiểu đơn giản, thành phần nào cú kiểu phức tạp. Nếu nhỡn tài liệu XML dƣới dạng hỡnh
cõy thỡ cỏch dễ nhận ra nhất là thành phần cú kiểu đơn giản thƣờng khụng cú nhỏnh con (là nỳt lỏ) trong khi kiểu phức tạp thỡ cú thể cú.
2.4.2.1. Quy định kiểu đơn giản
Kiểu đơn giản là cỏc kiểu nội tại đó đƣợc định nghĩa sẵn và cú thể dựng nú tự do trong lƣợc đồ XML. Thành phần thuộc kiểu đơn giản chỉ chứa dữ liệu đơn giản nhƣ dữ liệu ngày thỏng, số, chuỗi,... và khụng cho phộp chứa thuộc tớnh và thành phần con. Để tạo một kiểu đơn giản dựng cỳ phỏp sau:
<xsd:simpleType name = “typeName” base = “xsd:type”> </xsd:simpleType>
Trong đú, typeName là tờn kiểu dữ liệu thành phần; type là kiểu dữ liệu. Thớ dụ, <xsd:simpleType name=“HOCPHAN” base=“xsd:String”>
</xsd:simpleType>
Tờn kiểu dữ liệu Mụ tả
Binary Kiểu dữ liệu nhị phõn Boolean Kiểu lý luận
Byte Kiểu byte
Date Kiểu ngày
Decimal Kiểu thập phõn Double Kiểu số thực 64-bit
ENTITY Kiểu thực thể
ID Kiểu định danh
Int, integer Kiểu số nguyờn NOTATION Kiểu ghi chỳ
Month Kiểu thỏng
String Kiểu chuỗi
Bảng 2.4.2.1. Liệt kờ một số kiểu đơn giản 2.4.2.2. Quy định kiểu phức tạp
Thành phần cú kiểu phức tạp tức nú cú thể chứa thành phần con khỏc hay đƣợc phộp chứa thuộc tớnh. Kiểu phức tạp cú bốn loại thành phần: thành phần thuần; Thành phần rỗng; Thành phần hỗn hợp; Cuối cựng là thành phần văn bản thuần. Cỳ phỏp tổng quỏt khai bỏo kiểu phức tạp:
<xsd:complexType name = “typeName”>
<xsd:element name = “subName” type = “xsd:typeName” > <xsd:element name = “subName” type = “xsd:typeName” > ...
<xsd:attribute name = “attName” type = “xsd:typeName”> </xsd:complexType>
Trong đú, subName là tờn thành phần con; attName là tờn thuộc tớnh; cũng giống nhƣ kiểu đơn giản, typeName cú thể là kiểu dữ liệu đó định nghĩa sẵn chẳng hạn nhƣ kiểu số, kiểu ngày giờ, kiểu lý luận,... hoặc do ngƣời dựng tự định nghĩa.
Thớ dụ, thành phần MUC (mục) là đề mục của một phần trong bài giảng đƣợc định nghĩa kiểu phức tạp MUC chứa thành phần con TENMUC (tờn mục) và NDMUC (nội dung mục).
<xsd:element name=“MUC” type=“MUC”/> <xsd:complexType name=“MUC”>
<xsd:element name=“TENMUC” type=“xsd:string”/> <xsd:element name=“NDMUC” type=“xsd:string”/> </xsd:complexType>
</xsd:element>
Quy định thành phần chứa thành phần thuần: Là thành phần thuộc kiểu phức tạp cơ bản nhất cú thể chứa thành phần khỏc và luụn cả thuộc tớnh, ngoại trừ văn bản. Thớ dụ, trong đoạn tài liệu XML này, thành phần book
là “thành phần thuần”: <book>
<name language=“VietNam”>Hoc XML bang vi du</name>
<name language=“English”>Learning XML by Example</name> </book>
Cỏch quy định thành phần book nhƣ sau: <xsd:element name=“book”>
<xsd:element name=“name” type=“xsd:string”/> </xsd:complexType>
</xsd:element>
Quy định thành phần chứa thành phần rỗng: Là thành phần khụng cú nội dung nhƣng cú thể chứa thuộc tớnh. Thớ dụ, trong đoạn tài liệu XML này, thành phần Picture là thành phần rỗng:
<Picture filename=“book.jpg” height=“10” width=“30”/> Cỏch quy định thành phần rỗng Picture nhƣ sau:
<xsd:element name=“Picture”>
<xsd:comlpexType content=“empty”>
<xsd:element name=“filename” type=“xsd:string”/> <xsd:element name=“height” type=“xsd:decimal”/> <xsd:element name=“width” type=“xsd:decimal”/> </xsd:complexType>
</xsd:element>
Quy định thành phần chứa thành phần hỗn hợp: Là thành phần chỉ chứa cỏc thành phần, thuộc tớnh và (hoặc) văn bản. Thớ dụ, trong đoạn tài liệu XML này, thành phần Software chứa nội dung hỗn hợp gồm: vừa văn bản lẫn thành phần con:
<Softwares>
Phan mem <software>XML Writer</software> Thoi gian su dung <maxDays>45</maxDays> </Softwares>
Cỏch quy định thành phần Software nhƣ sau: <xsd:element name=“Softwares”>
<xsd:comlpexType content = “mixed”>
<xsd:element name=“software” type=“xsd:string”/> <xsd:element name=“maxDays”> <xsd:simpleType base=“xsd:integer”> <xsd:maxExclusive value=“45”/> </xsd:simpleType> </xsd:complexType> </xsd:element>
Quy định thành phần chứa thành phần văn bản thuần: Là thành phần thuộc kiểu phức tạp chỉ chứa văn bản và cú thể cú thuộc tớnh. Thớ dụ, thành phần name là thành phần văn bản thuần”:
<name language=“English”>XML by Example</name> Cỏch quy định thành phần name nhƣ sau:
<xsd:element name=“name” type=“nameType”/>