2.1.2. Cấu trúc và kiểu cơ chế của một tài liệu XML và một lược đồ CSDL quan hệ. quan hệ.
Những cơ chế cơ bản được sử dụng để định rõ cấu trúc của những tài liệu XML và lược đồ quan hệ là những kiểu phần tử và những thuộc tính đối với XML giống như những quan hệ và những thuộc tính đối với CSDL quan hệ. Về kiểu phần tử, nó thì hữu dụng cho việc mô tả với hai mảng phạm trù: Đầu tiên, mô tả kiểu phần tử có bao gồm một miền nguyên tử hay không. Thứ hai biểu thị kiểu phần tử có một miền hợp hay không. Những kết quả này phân biệt trong bốn loại kiểu phần tử khác nhau. Điều này nhấn mạnh là sự phân loại này thì thích hợp tới cả hai lược đồ DTD và XML. Tuy nhiên CSDL quan hệ không cho phép tới những miền quan hệ đặc biệt, nhưng với những thuộc tính, hãy xem xét với mỗi loại kiểu phần tử như những thuộc tính XML và CSDL quan hệ với nhiều chi tiết.
Loại kiểu phần tử (ET) Miền nguyên tử Miền hợp
Kiểu phần tử nguyên tử √ x
Kiểu phần tử hợp thành với nội dung phần tử x √
Kiểu phần tử hợp thành với nội dung phần tử √ √
Kiểu phần tử rỗng x x
Hình 2.2: Các loại kiểu phần tử
Những kiểu phần tử chỉ bao gồm một miền nguyên tử được gọi là những kiểu phần tử nguyên tử. Về những kiểu phần tử DTD chỉ có một miền nguyên tử có thể là #PCDATA (những miền nguyên tử được xác định trước cho những thuộc tính DTD so sánh một kiểu chuỗi được gọi là CDATA), một kiểu liệt kê và một vài kiểu đặc biệt, ví dụ: ID, IDREF(s).
Ngược lại DTD, lược đồ XML cung cấp một phạm vi rộng lớn của những miền nguyên tử được xác định bởi những kiểu phần tử và những thuộc tính. Những miền nguyên tử được định trước này là phù hợp để biểu diễn trong CSDL quan hệ. Lược đồ XML cho phép những miền nguyên tử được sử dụng như cơ sở bắt nguồn từ những miền được định nghĩa bởi người dùng. Điều này thì tương tự với nội dung hướng đối tượng của lớp con bằng việc định rõ những mở rộng thích hợp hoặc những ràng buộc.
Bên cạnh những miền nguyên tử, những kiểu phần tử được phép kết hợp với một miền hợp, được gọi là những kiểu phần tử hợp. Kiểu phần tử bao gồm những kiểu phần tử khác được gọi là những kiểu phần tử hợp được sử dụng để xây dựng độ sâu tuỳ ý (xác định thứ bậc kiểu phần tử trong tài liệu). Với mỗi tài liệu XML, nó được yêu cầu là tất cả các kiểu phần tử hợp được tạo thành từ một hay nhiều kiểu phần tử đơn. Đây là một trong những ràng buộc CSDL quan hệ, nơi mà một phần của những sự phân cấp không thể thực hiện bởi những trung gian ẩn bên trong khi những quan hệ gồm những thuộc tính chỉ có giá trị nguyên thuỷ. Tuy nhiên một phần của những sự phân cấp có thể được đưa ra trong CSDL quan hệ bằng các trung gian của khoá ràng buộc ngoại lai. Khi những kiểu phần tử hợp thành có thể có một miền nguyên tử để thêm vào miền hợp thành. Hơn nữa, bên trong những kiểu phần tử hợp thành với nội dung hỗn hợp và những kiểu phần tử hợp thành với nội dung phần tử (hình 2.2). Và đặc biệt khi những kiểu phần tử hợp thành xuất hiện trong một chuỗi nối tiếp hoặc như là một sự lựa chọn.
DTD XML Schema
<! ELEMENT village
(name, country, accommodation*)> <! ELEMENT name (#PCDATA)> <! ELEMENT country (#PCDATA)>
<! ELEMENT accommodation (#PCDATA)>
<complexType name= “villageInfo” <sequence>
<element name= “name” type= “string” minOccurs= “1” maxOccurs= “1”/> <element name= “country” type= “string”
minOccurs= “1” maxOccurs= “1”/>
<element name= “accommodation” type= “string” minOccurs= “0” maxOccurs= “unbounded”/>
XML Document
<village>
<name> Innsbruck </name> <country> Tyrol </country>
<accommodation> Hotel Post </accommodation> <accommodation> Hotel Admiral </accommodation> <accommodation> Hotel Anker </accommodation> </village>
Hình 2.3: Kiểu phần tử hợp thành với nội dung kiểu phần tử
Xem xét sự định nghĩa kiểu phần tử hợp thành, có một sự khác nhau đáng kể giữa DTD và lược đồ XML, Trong sự ràng buộc với DTD, lược đồ XML tách rời định nghĩa của những kiểu phần tử hợp thành từ sự công bố của những miền hợp thành của nó đặc biệt là kiểu phần tử hợp thành. Hình 2.3 minh hoạ định nghĩa của những kiểu phần tử hợp thành village và đặc biệt của miền hợp thành
villageInfo, từ khoá ComplexType biểu thị sự công bố của miền hợp thành này.
Note: Định nghĩa một lược đồ đặc biệt sử dụng không gian tên lược đồ XML có thể được dùng để phân biệt giữa những kiểu phần tử và kiểu dữ liệu được cung cấp bởi lược đồ XML và đặc biệt những kiểu phần tử và những kiểu dữ liệu được định nghĩa bởi lược đồ phức tạp.
Tại mức minh hoạ, những tài liệu XML bao gồm các phần tử, mỗi phần tử được đánh dấu bởi một thẻ bắt đầu và một thẻ kết thúc. Kiểu phần tử bao gồm kiểu phần tử hợp thành được biểu diễn bằng những thẻ ẩn giống như những thuộc tính. Cả các kiểu phần tử và thuộc tính đều được phép có giá trị, nhờ đó chúng ta có thể phân biệt giá trị của kiểu phần tử và giá trị của thuộc tính. Các tên thuộc tính và giá trị của chúng thì có vị trí bên trong thẻ bắt đầu, trong khi giá trị kiểu phần tử được tạo giữa thẻ bắt đầu và thẻ kết thúc. Do đó, thông tin
lược đồ của một lược đồ rõ ràng được tái tạo bên trong những tài liệu XML trong đó mỗi phần tử và mỗi giá trị thuộc tính được chú giải với tên kiểu phần tử và tên kiểu thuộc tính tương ứng. Trong mức minh hoạ của CSDL quan hệ thì đơn giản hơn.