2.3.5. Nhúng d l iu phi XML vào tài l iu
2.4. Lc đ Schema
M t l c đ đ n gi n ch là m t t p nh ng lu t đ c đnh ngh a l i đ mô t n i dung d li u c a m t tài li u XML. Nó t ng t nh m t đnh ngh a c u trúc b ng trong c s d li u quan h . Trong l c đ XML, chúng ta đ nh ngh a m t tài li u XML, nh ng ph n t c a nó, nh ng ki u d li u c a ph n t và nh ng thu c tính liên quan, và
đi u quan tr ng nh t là m i quan h “cha-con” gi a nh ng ph n t . Chúng ta có th t o
l c đ trong nhi u cách khác nhau. Cách đ n gi n nh t là s d ng Notepad. L c đ cho phép ta đnh ngh a và khai báo ki u d li u mà ta c n. Ta dùng ch th <schema> đ b t đ u khai báo l c đ . Sau đây là m t ví d m t l c đ XML:
<xsd:schema id="Catalog" targetNamespace="http://tempuri.org/Catalog1.xsd" xmlns="http://tempuri.org/Catalog1.xsd” xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
<xsd:element name="Catalog" msdata:IsDataSet="true" msdata:EnforceConstraints="False"> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:element name="Product">
<xsd:complexType> <xsd:sequence>
<xsd:element name="ProductID" type="xsd:string" minOccurs="0" /> <xsd:element name="ProductName" type="xsd:string" minOccurs="0" /> <xsd:element name="ListPrice" type="xsd:string" minOccurs="0" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> Ki u Mô t
bin.base64 Ki u đ i t ng nh phân mã hóa theo chu n base64
bin.hex Ki u hex
boolean Mang giá tr 0 ho c 1. char Ki u ký t
date Ngày tháng dateTime Ngày gi float S ch m đ ng.
int S nguyên.
number Ki u s đ n gi n(khơng có gi i h n g m s âm, s d ng, s l , s m …)
i1 S nguyên 1 byte i2 S nguyên 2 byte i4 S nguyên 4 byte
r4 S th c làm trịn đ n 7 kí s .
r8 S th c làm trịn đ n 15 kí s .
ui2 S nguyên không d u 2 byte ui4 S nguyên không d u 4 byte
Theo schema, ph n t ch a các ph n t con có thêm thu c tính là complex type, n u ch ch a d li u đ n gi n nh chu i, ngày tháng, s và không ch a thu c tính và ph n t con thì đ c g i là simple type.
Khai báo các ph n t và ki u d li u:
<prefix:complexType> T o ki u ph c h p <prefix:simpleType> T o ki u đ n gi n <prefix:element> Khai báo thành ph n <prefix:attribute> Khai báo thu c tính
Các ki u gi n đ n:
Ki u Mô t
binary Ki u d li u nh phân nh 110001 boolean Ki u lu n lý nh True, False, 1, 0 byte Ki u byte nh 123; l n nh t là 255 century Ki u th k nh 20
date Ki u ngày v i đnh d ng YYYY-MM-DD nh 2001-10-15
decimal Ki u th p nh 5.4, 0, -219.06 double Ki u s th c 64-bit
ENTITIES Ki u th c th . ENTITY Ki u đa th c th .
float Represents a single-precision 32-bit floating point ID Ki u đnh danh.
IDREF Ki u tham chi u đnh danh.
int Ki u s nguyên nh 123456789 integer Ki u s nguyên
language Ki u đnh danh ngôn ng nh de, fr, or en-US
long Ki u long integer, such as 12345678901234 month Ki u tháng nh 2001-10
Name Represents the XML 1.0 Name type
NCName Holds an XML name without a namespace prefix and colon negativeInteger Represents a negative integer
NMTOKEN Ki u Token đ n.
NMTOKENS Ki u đa token.
NOTATION Ki u ghi chú.
short Ki u short integer nh 12345 string Ki u chu i
time Ki u gi nh 12:00:00.000
uriReference Holds a URI, such as http://www.w3c.org
year Ki u n m 2001
- Ta có th khai báo hay đnh ngh a 1 ki u ph c h p bên trong ki u ph c h p mà ta đang đnh ngh a. Ta có ki u ph c h p address đ c s d ng trong ki u ph c h p transactionType.
- Trong ch th khai báo ph n t ta có th dùng tham chi u (ref) đ n ph n t đã đ c đnh ngh a n i khác.
- M c dù đ c phép đ a vào 1 ph n t đã đ c đnh ngh a tr c đó nh ng ph i tuân theo quy t c: ph n t không đ c là m t ph n c a đnh ngh a ki u ph c h p, ph n t ph i đ c khai báo tòan c c ngay sau c p <schema>.
- ch đnh s l n xu t hi n c a ph n t (có th là s l n ít nh t) ta dùng thu c tính minOccurs = 0, s l n nhi u nh t mà ph n t đ c phép xu t hi n ta dùng thu c tính maxOccurs.
- Ch đnh ràng bu c và tr m c đnh cho thu c tính:
Required Thu c tính c n ph i hi n h u trong th và ph i đ c gán tr . Optional Th ơc tính có th có ho c khơng và giá tr là không b t bu c. Fixed giá tr thu c tính ph i đ c gán c đnh và không đ c thay đ i. Default N u thu c tính khơng đ c gán tr thì giá tr đnh ngh a trong l c
đ là giá tr m c đnh c a thu c tính. prohibited Khơng cho phép th ơc tính xu t hi n.
Và ta dùng t khóa “use” đ ch đnh ràng bu c cho thu c tính.
- Có th t đnh ngh a ki u gi n đ n nh ng ph i d a trên ki u gi n đ n c s n i t i c a đ c t XML và ta dùng thu c tính “base”.
- Khái ni m facet đ c dùng đ ch ph m vi gi i h n t p d li u c a ki u gi n
đ n, ta dùng 2 thành ph n: minInclusive, maxInclusive.
Ngòai ra trong facet, còn thành “pattern” dùng đ so kh p theo m u gi i h n và thành ph n gi i h n ki u li t kê “enumeration”.
- T o các ph n t r ng b ng cách khai báo ki u ph c h p và đ t thu c tính “content” là “empty”. Ví d :
<xsd:element name="image">
<xsd:complexType content="empty">
- T o các ph n t có n i dung h n h p(v a v n b n v a các ph n t con) b ng cách khai báo ki u ph c h p và đ t thu c tính “content” là “mixed”.
- L c đ chú gi i: <xsd:annotation>, <xsd:documentation>, và <xsd:appInfo>. <prefix:annotation> Là ph n t chú gi i chính ch a các ph n t con <prefix:documentation>, và <prefix:appInfo> <prefix:documentation> Dùng đ ch a các chu i v n b n dùng đ ch a chú thích trong tài li u.
<prefix:appInfo> Ch a thông tin liên quan đ n t ng ng d ng.
- T o các l a ch n: dùng khai báo <prefix:choice>.
- T o khai báo tu n t : dùng đnh ngh a <prefix:sequence>.
- T o nhóm và thu c tính nhóm: dùng khai báo <prefix:group> - gom nhóm, <prefix: attributeGroup> - gom thu c tính.
- T o nhóm all: các ph n t đ c đ nh ngh a trong nhóm all ph i xu t hi n đ ng th i trong tài li u ho c khơng có ph n t nào xu t hi n c .
S đ th hi n s phân c p gi a các ki u d li u. 2.5. Xpointer
Xpointer đ c dùng đ tr đ n m t m c thông tin d li u trong tài li u XML. Xpointer đ c xây d ng d a trên c s Xpath. Tuy Xpath có kh n ng đnh v nh ng nó khơng có kh n ng ch ra chính xác d li u c n l y. làm đ c đi u này, chúng ta c n nh vào Xpointer. phân bi t s khác nhau gi a Xpath và Xpointer, chúng ta hình dung đ truy xu t d li u ch a trong m t t p tin v n b n nào đó, Xpath ch có th t o
đ ng d n đ n v trí c a file, trong khi Xpointer có th cho bi t v trí c a t ng ký t c th ho c m t đo n v n b n c th .
Xpointer đnh ngh a m t v trí d li u d a trên đi m tr (point). Có hai lo i đi m đó là đi m tr nút (node-point) và đi m tr ký t (chacracter-point). Khi mu n đ nh v tài li u d a trên các ph n t XML(nút), b n s d ng đi m tr nút. Khi mu n đnh v d li u
đ n t ng ký t c th c a n i dunh tài li u, b n có th dùng đi m tr ký t . Các đi m tr d a trên ch s (index position) đ xác đnh v trí. N u t p d li u b n ch đnh bao g m nhi u nút con thì ch s s xác đnh v trí đi m tr nút. Ng c l i n u d li u không ch a các ph n t th XML thì ch s s xác đnh đi m tr ký t Vd: <DOCUMENT> <GREETING> Hello XML! </GREETING> </DOCUMENT>
Trong đo n tài li u trên có hai đi m tr nút. i m tr nút v i ch s 0 ch ph n t g c <DOCUMENT>, đi m tr nút v i ch s 1 ch ph n t <GREETING>. M c dù v y
chúng ta có đ n 10 đi m tr ký t . i m tr ký t v i ch s 0 ch ký t “H”, đi m tr ký t v i ch s 9 ch ký t “!”
Xpointer th ng đ c s d ng chung v i các đa ch c s URI hay URL. B ns d ng hàm tr xpointer() sau ký hi u # c a đa ch URL.
Vd:
Xlink
Xlink có nhi u ki u liên k t khác nhau, đ c chia thành 2 nhóm: -Simple link
-extended link: đích đ n có th là ngi u tài li u và liên k t có th đnh ngh a m t m i quan h gi a các tài li u đó. M i quan h cho phép liên k t hai chi u
Các thu c tính c a simple link
href đ c t URI, URL hay v trí c a tài nguyên đích
inline đ c t r ng n u liên k t là inline (đích
đ n là m t ph n trong tài nguyên c c b ) ho c out-of-line (đích đ n khơng n m trong tài ngun c c b . Giá tr true s là inline, false s là out-of-line Show ch đnh tài nguyên đích s đ c bi u
di n nh th nào. Có th là
replace : tài nguyên đích s đ c n p vào c a s hi n hành, ho c thay ho c thay th d li u hi n hành đ x lý embed : tài nguyên đích s c nhúng vào tài nguyên hay d li u hi n hành new : tài nguyên đích s đ c s đ c n p vào c a s m i, không nh h ng gì đ n t i d li u hi n hành
Actuate đ c t r ng khi liên k t xoay chi u. Khi tài nguyên cái mà liên k t tr đ n đ đ c g i ho c truy c p.
user: tài nguyên đích ch đ c truy c p khi ng i dùng ho c hành đ ng bên ngoài yêu c u
auto: tài nguyên đích đ c truy c p khi tài nguyên còn l i trong cung m t liên k t đ c truy c p, đ m m t series các tài nguyên có liên h v i nhau b ng 1 cái click chu t
Behavior đ c t m t t p các ch d n không đ c
đnh ngh a trong Xlink hay trong tài li u XML nh ng chúng đi u khi n trang thái c a liên k t theo cách mà n c dung
đ c bi u di n. T ng t nh thu c tính behavior trong CCS style sheet liên k t m t ph n t đ n m t hàm
Role gi ng v i thu c tính name trong HTML, role đ c dùng đ t o m i liên k t gi a các tài li u
Title đ c t m t cái nhãn ho c m t text đ c trình bày cho ng i dùng xem.
Content-role m t cách thay th cho role. Thông tin này s đ c s d ng mà không c n đ c
t trong nh ng chu n Xlink
Content-title m t cách thay th cho role. Thông tin này s đ c s d ng mà không c n đ c t trong nh ng chu n Xlink
Steps đ c t “levels deep” đ đi đ n khi truy c p và nh ng tài nguyên t m t liên k t. Ví d : n u trang trang đích c a liên k t
đ c t các tài nguyên nh là nh ng đích
đ n c a các liên k t. Khi đó thu c tình actuate s là auto, ng d ng có th s b quá t i khi truy c p vào t t c các liên k t. M t giá tr nguyên cho steps s ng n ng a đi u này b ng cách đi u
khi n nh ng liên k t trong m t m t xích cho phép
Giái tr thu c tính c a xml:link dành cho extended link
đ đ c t liên k t m r ng chúng ta ph i có m t cách đ đ c t m t t p h p các tài nguyên đích đ n. i u này đ c th c hi n b ng các s d ng 2 giá tr đ c bi t dành riêng cho xml:link
“locator” đ c t liên k t này ch đ n m t trong nh ng tài nguyên. Nó n m trong liên k t m r ng
“group” n đ nh r ng nó là m t nhóm các liên k t đ n các tài li u và nó ch a m t danh sách các liên k t này
“document” ch đnh r ng đây là liên k t đ n tài nguyên. Nó n m trong group
Vd1:
<mylink xml:link=”extended” inline=”false”>
<mytarget xml:link=”locator” inline=”false” role=”Font” Title=“How to specify different fonts”
Href=http://mysite.com/help/fonts.xml/>
<mytarget xml:link=”locator” inline=”false” role=“Color” Title=“How to specify different fonts”
Href=http://mysite.com/help/color.xml/>
<mytarget xml:link=”locator” inline=”false” role=”Text Size” Title=“How to specify different fonts”
Href=http://mysite.com/help/textsize.xml/> </mylink>
Vd2
<mylink xml:link=“group” inline =“false”>
<mytarget xml:link= “document” href= “http://mysite.com/doc/doc1.xml” /> <mytarget xml:link= “document” href= “http://mysite.com/doc/doc2.xml” /> <mytarget xml:link= “document” href= “http://mysite.com/doc/doc3.xml” /> </mylink>
T o đi m b t đ u tuy t đ i trong tài li u XML
root() đ c t g c c a tài li u, th ng là ph n t g c
origin() ch s d ng khi v trí đích n m trong cùng tài li u v i liên k t. c t ph n t ch a liên k t
Id(elementid) đ c t ph n t có thu c tính id là giá tr elementid. T t c các giá tr c a thu c tính id ph i là duy nh t trên tài li u đích
đ n
Html(anchorname) đ c t HTML <A> anchor có thu c tính name có giá tr anchorname. T t c các giá tr c a Name trong tai li u đích đ n ph i là duy nh t
Nh ng k thu t đnh v trong tài li u XML b t đ u t các đi m kh i đ u tuy t đ i Child nh ng ph n t con tr c ti p c a ph n t hi n hành.(only children) Descendant nh ng ph n t t i c p th p c a ph n t hi n hành(child,grandchild,…) Ancestor nh ng ph n t t i c p trên ph n t hi n hành(parent,grandparent) Psibling nh ng ph n t cùng c p nh ng xu t hi n tr c ph n t hi n hành Fsibling nh ng ph n t cùng c p nh ng xu t hi n sau ph n t hi n hành Preceding nh ng ph n t có th m ho c th đóng xu t hi n tr c ph n t hi n hành Following nh ng ph n t có th m ho c đóng xu t hi n sau ph n t hi n hành 2.6. Xpath
Trong tài li u XML, b n có th dùng khái ni m đ ng d n t ng t h th ng file c a h
đi u hành thông qua khái ni m Xpath. Xpath cung c p cho b n c ch tham chi u đ n m t m c d li u trong tài li u XML thông qua đ ng d n
Nh chúng ta bi t, tài li u XML th ng có ph n t g c (root) ví d nh <C></C> là ph n t g c trong tài li u minh h a đa nêu trên. M i ph n t con đ u n m bên trong ph n t g c. Xpath đ nh ngh a ph n t g c là ký t s trái “/”. tham chi u đ n m t nút d li u trong tài li u XML chúng ta có th ch đ ng d n t ng t nh đ ng d n c a th m c.
Xpath và các tham chi u đ ng d n trong tài li u XML ng d n tuy t đ i
N u đ ng d n Xpath b t đ u vàng / thì có ngh a đây là m t đ ng d n tuy t đ i b t ngu n t ph n t g c
Vd:
/AAA Ph n t đ c ch n là AAA
/AAA/BBB/CCC Ch n t t c ph n t CCC con c a /AAA/BBB
ng d n t ng th
Chúng ta s d ng ký t // đ tham chi u đ n t t c các ph n t trong tài li u Vd //BBB ch n t t c ph n t BBB trong tài li u //BBB/DDD ch n t t c các ph n t DDD con c a BBB Ch n các ph n t b ng ký t đ i di n * Ký t đ i di n * dùng ch n t t c các ph n t cùng tho mãn đ ng d n ch đnh Vd /AAA/CCC/DDD/* ch n t t c ph n t có đ ng d n /AAA/CCC/DDD /*/*/*/BBB ch n t t c ph n t BBB n m c p th 3 //* ch n t t c các ph n t trong tài li u Ch n các ph n t theo v trí b ng d u ngo c []