Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
449,44 KB
Nội dung
- 160 - <PLANET NAME=”Earth” > <MASS UNITS=”(Earth=1)”>1</MASS> <DAY UNITS=”days”>1</DAY> <RADIUS UNITS=”miles”>2107</RADIUS> <DENSITY UNITS=”(Earth=1)”>1</DENSITY> <DISTANCE UNITS=”million miles”>128.4</DISTANCE> </PLANET> Tài liệu XSLT: <?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl> <xsl:template match=”PLANETS”> <HTML> <HEAD> <TITLE> Planets </TITLE> </HEAD> <BODY> <xsl:apply-templates select=”PLANET” /> </BODY> </HTML> </xsl:template> <xsl:template match=”PLANET”> <xsl:element name=”{@NAME}”> <MASS> <xsl:value-of select=”MASS”/> </MASS> </xsl:element> </xsl:template> </xsl:stylesheet> “{@NAME}” có nghĩa là lấy giá trị của thuộc tính NAME trong phần tử PLANET. - 161 - Kết quả là : <HTML> <HEAD> <TITLE> Planets </TITLE> </HEAD> <BODY> <Mercury> <MASS>.0553</MASS> </Mercury> <Venus> <MASS>.815</MASS> </Venus> <Earth> <MASS>1</MASS> </Earth> </BODY> </HTML> Tạo thuộc tính mới Phần tử <xsl:attribute> dùng tạo mới một thuộc tính cho phần tử nào đó. Ví dụ : <?xml version=”1.0”?> <?xml-stylesheet type=”text/xsl” href=”planets.xsl”?> <PLANETS> <PLANET COLOR=”RED”> <NAME>Mecury</NAME> <MASS UNITS=”(Earth=1)”>.0553</MASS> <DAY UNITS=”days”>58.65</DAY> <RADIUS UNITS=”miles”>1516</RADIUS> <DENSITY UNITS=”(Earth=1)”>.983</DENSITY> - 162 - <DISTANCE UNITS=”million miles”>43.4</DISTANCE> </PLANET> <PLANET COLOR=”WHITE”> <NAME>Venus</NAME> <MASS UNITS=”(Earth=1)”>.815</MASS> <DAY UNITS=”days”>116.75</DAY> <RADIUS UNITS=”miles”>3716</RADIUS> <DENSITY UNITS=”(Earth=1)”>.943</DENSITY> <DISTANCE UNITS=”million miles”>66.8</DISTANCE> </PLANET> <PLANET COLOR=”BLUE”> <NAME>Earth</NAME> <MASS UNITS=”(Earth=1)”>1</MASS> <DAY UNITS=”days”>1</DAY> <RADIUS UNITS=”miles”>2107</RADIUS> <DENSITY UNITS=”(Earth=1)”>1</DENSITY> <DISTANCE UNITS=”million miles”>128.4</DISTANCE> </PLANET> </PLANETS> Ta muốn tạo một thuộc tính mang tên của các hình tinh trong tài liệu đích đồng thời giá trị thuộc tính mới sẽ được gán chính là giá trị rút trích từ thuộc tính COLOR của phần tử PLANET. Tài liệu XSLT như sau : <?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl> <xsl:template match=”PLANETS”> <HTML> <HEAD> <TITLE> Planets </TITLE> - 163 - </HEAD> <BODY> <xsl:apply-templates select=”PLANET” /> </BODY> </HTML> </xsl:template> <xsl:template match=”PLANET”> <PLANET> <xsl:attribute name=”{NAME}”> <xsl:value-of select=”@COLOR”/> </xsl:attribute> </PLANET> </xsl:template> </xsl:stylesheet> “{NAME}” có nghĩa là lấy giá trị của phần tử NAME là con của phần tử PLANET. Kết quả xuất là : <HTML> <HEAD> <TITLE> Planets <TITLE> </HEAD> <BODY> <PLANET Mecury=”RED”></PLANET> <PLANET Venus=”WHITE”></PLANET> <PLANET Earth=”BLUE”></PLANET> </BODY> </HTML> Sao chép các nút dữ liệu - 164 - Phần tử xsl:copy cho phép sao chép dữ liệu của một nút trong tài liệu đầu vào sử dụng cho mục đích chuyên dụng nào đó. Ví dụ : thay vì kết xuất ra tài liệu HTML, ta tạo lại một tài liệu XML mới ở đầu ra bằng cách copy toàn bộ tất cả các nút của tài liệu XML đầu vào. <?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl> <xsl:template match=”* | text()”> <xsl:copy> <xsl:apply-templates select=”* | text()” /> </xsl:copy> </xsl:template> </xsl:stylesheet> Kết quả xuất : <?xml version=”1.0”?> <?xml-stylesheet type=”text/xsl” href=”planets.xsl”?> <PLANETS> <PLANET> <NAME>Mecury </NAME> <MASS UNITS=”(Earth=1)”>.0553</MASS> <DAY UNITS=”days”>58.65</DAY> <RADIUS UNITS=”miles”>1516</RADIUS> <DENSITY UNITS=”(Earth=1)”>.983</DENSITY> <DISTANCE UNITS=”million miles”>43.4</DISTANCE> </PLANET> <PLANET> <NAME>Venus</NAME> <MASS UNITS=”(Earth=1)”>.815</MASS> <DAY UNITS=”days”>116.75</DAY> <RADIUS UNITS=”miles”>3716</RADIUS> <DENSITY UNITS=”(Earth=1)”>.943</DENSITY> - 165 - <DISTANCE UNITS=”million miles”>66.8</DISTANCE> </PLANET> <PLANET> <NAME>Earth</NAME> <MASS UNITS=”(Earth=1)”>1</MASS> <DAY UNITS=”days”>1</DAY> <RADIUS UNITS=”miles”>2107</RADIUS> <DENSITY UNITS=”(Earth=1)”>1</DENSITY> <DISTANCE UNITS=”million miles”>128.4</DISTANCE> </PLANET> </PLANETS> Sử dụng xsl:if Sử dụng phần tử <xsl:if> để phát biểu một điều kiện lựa chọn. Để sử dụng phần tử này ta đặt thuộc tính test của nó biểu thức cần kiểm tra trị true, false. Ví dụ : ta muốn khi gặp phần tử cuối cùng trong dữ liệu đầu vào cần so khớp thì in ra thẻ <HR> (phần tử định dạng tạo một đường gạch ngang trong HTML): <?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl> <xsl:template match=”PLANETS”> <HTML> <HEAD> <TITLE> Planets </TITLE> </HEAD> <BODY> <xsl:apply-templates select=”PLANET” /> </BODY> </HTML> </xsl:template> - 166 - <xsl:template match=”PLANET”> <P> <xsl:value-of select=”NAME” /> is planet number <xsl:value-of select=”position()”/> from the sun. </P> <xsl:if test=”position() = last(.)”> <xsl:element name=”HR”> </xsl:if> </xsl:template> </xsl:stylesheet> Position() cho biết vị trí của phần tử đang xét Last(.) vị trí cuối cùng của phần tử đang xét. Kết quả kết xuất : <HTML> <HEAD> <TITLE> Planets </TITLE> </HEAD> <BODY> <P> Mercury is planet number 1 from the sun.</P> <P> Earth is planet number 2 from the sun. </P> <P> Venus is planet number 3 from the sun. </P> <HR> </BODY> </HTML> Sử dụng xsl:choose - 167 - Phần tử điều khiển lựa chọn <xsl:choose> tương tự lệnh switch của Java hay C. Phần tử này cho phép kiểm tra và chọn ra giá trị trong một danh sách các so khớp thoả mãn điều kiện đề ra. Giả sử tài liệu xml như sau : <?xml version=”1.0”?> <?xml-stylesheet type=”text/xsl” href=”planets.xsl”?> <PLANETS> <PLANET COLOR=”RED”> <NAME>Mecury</NAME> <MASS UNITS=”(Earth=1)”>.0553</MASS> <DAY UNITS=”days”>58.65</DAY> <RADIUS UNITS=”miles”>1516</RADIUS> <DENSITY UNITS=”(Earth=1)”>.983</DENSITY> <DISTANCE UNITS=”million miles”>43.4</DISTANCE> </PLANET> <PLANET COLOR=”WHITE”> <NAME>Venus</NAME> <MASS UNITS=”(Earth=1)”>.815</MASS> <DAY UNITS=”days”>116.75</DAY> <RADIUS UNITS=”miles”>3716</RADIUS> <DENSITY UNITS=”(Earth=1)”>.943</DENSITY> <DISTANCE UNITS=”million miles”>66.8</DISTANCE> </PLANET> <PLANET COLOR=”BLUE”> <NAME>Earth</NAME> <MASS UNITS=”(Earth=1)”>1</MASS> <DAY UNITS=”days”>1</DAY> <RADIUS UNITS=”miles”>2107</RADIUS> <DENSITY UNITS=”(Earth=1)”>1</DENSITY> <DISTANCE UNITS=”million miles”>128.4</DISTANCE> </PLANET> </PLANETS> - 168 - Giả sử ta muốn định dạng tên của các hành tinh tuỳ thuộc vào màu sắc COLOR của nó, màu đỏ thì in đậm tên, màu trắng thì in nghiêng tên, màu xanh dương thì gạch dưới tên, ta thực hiện điều này bằng cách chọn trong thuộc tính test của <xsl:when> như sau : <?xml version=”1.0”?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl> <xsl:template match=”PLANETS”> <HTML> <HEAD> <TITLE> Planets </TITLE> </HEAD> <BODY> <xsl:apply-templates select=”PLANET” /> </BODY> </HTML> </xsl:template> <xsl:template match=”PLANET”> <xsl:choose> <xsl:when test=”@COLOR=’RED’”> <B> <xsl:value-of select=”NAME”/> </B> </xsl:when> <xsl:when test=”@COLOR=’WHITE’”> <I> <xsl:value-of select=”NAME”/> </I> </xsl:when> <xsl:when test=”@COLOR=’BLUE’”> <U> <xsl:value-of select=”NAME”/> - 169 - </U> </xsl:when> <xsl:therwise> <PRE> <xsl:value-of select=”.”/> </PRE> </xsl:therwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Trong ví dụ ta sử dụng phần tử <xsl:otherwise> để yêu cầu chọn gái trị mặc định khi không có biểu thức <xsl:when> nào thoả mãn. Kết quả xuất sẽ là : <HTML> <HEAD> <TITLE> Planets </TITLE> <HEAD> <BODY> <B>Mercury</B> <I>Venus</I> <U>Earth</U> <BODY> </HTML> [...]... quy tắc xử lý bắt buộc khi sử dụng chương trình: Không gian toạ độ: Quy ước xác định 1 điểm: “chuỗi phía trước” TênĐiểm(x,y,z) Mặc định : “chuỗi phía trước” = “điểm” - 176 - “chuỗi phía trước” = “có tâm là” “chuỗi phía trước” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có điểm trong đề ta tiến hành cắt chuỗi lấy các thông số cho điểm − Quy ước xác định 1 đường thẳng:... định là có đường thẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho đường thẳng − Quy ước xác định 1 mặt cầu: Tìm “chuỗi nhận dạng” có trong đề Mặc định : “chuỗi nhận dạng” = “mặt cầu” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.Sau khi xác định là có mặt cầu trong đề ta tiến hành cắt chuỗi lấy các thông số cho mặt cầu − Quy ước xác định 1 mặt phẳng: Tìm “chuỗi... là có mặt phẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho mặt phẳng − Quy ước xác định 1 tứ diện: - 177 - Tìm “chuỗi nhận dạng” có trong đề Mặc định : “chuỗi nhận dạng” = “tứ diện” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có tứ diện trong đề ta tiến hành cắt chuỗi lấy các thông số cho tứ diện − Quy ước xác định 1 tam giác: Tìm “chuỗi... xác định là có tam giác trong đề ta tiến hành cắt chuỗi lấy các thông số cho tam giác − Quy ước xác định 1 vector: Tìm “chuỗi nhận dạng” có trong đề Mặc định : “chuỗi nhận dạng” = “vector” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có vector trong đề ta tiến hành cắt chuỗi lấy các thông số cho vector Mặt phẳng toạ độ: − Quy ước xác định 1 điểm: “chuỗi... định là có điểm trong đề ta tiến hành cắt chuỗi lấy các thông số cho điểm − Quy ước xác định 1 đường thẳng: Tìm “chuỗi nhận dạng” có trong đề Mặc định : “chuỗi nhận dạng” = “đường thẳng” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có đường thẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho đường thẳng − Quy ước xác định 1 đường tròn: Tìm... là có đường tròn trong đề ta tiến hành cắt chuỗi lấy các thông số cho đường tròn − Quy ước xác định 1 Ellipse: Tìm “chuỗi nhận dạng” có trong đề Mặc định : - 179 - “chuỗi nhận dạng” = “Ellipse” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có Ellipse trong đề ta tiến hành cắt chuỗi lấy các thông số cho Ellipse − Quy ước xác định 1 Hyperbol: Tìm “chuỗi... xác định là có Hyperbol trong đề ta tiến hành cắt chuỗi lấy các thông số cho Hyperbol − Quy ước xác định 1 vector: Tìm “chuỗi nhận dạng” có trong đề Mặc định : “chuỗi nhận dạng” = “vector” “chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề Sau khi xác định là có vector trong đề ta tiến hành cắt chuỗi lấy các thông số cho vector - 180 - ... UNITS=”(Earth=1)”>.0553 58.65 1516 .983 43.4 Ta sẽ lấy tất cả các phần tử trùng tên như sau : Nội dung tài liệu planets.xsl như sau : . Sử dụng phần tử <xsl:if> để phát biểu một điều kiện lựa chọn. Để sử dụng phần tử này ta đặt thuộc tính test của nó biểu thức cần kiểm tra trị true, false. Ví dụ : ta muốn khi gặp phần tử. </xsl:template> </xsl:stylesheet> “{NAME}” có nghĩa là lấy giá trị của phần tử NAME là con của phần tử PLANET. Kết quả xuất là : <HTML> <HEAD> <TITLE> Planets. </Earth> </BODY> </HTML> Tạo thuộc tính mới Phần tử <xsl:attribute> dùng tạo mới một thuộc tính cho phần tử nào đó. Ví dụ : <?xml version=”1.0”?> <?xml-stylesheet