SQL標籤庫提供了建立和操做XML文檔的標籤。html
引入語法:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>java
導入包:http://www.apache.org/dist/xerces/j/ 進行下載apache
解壓,提取xalan.jar 和 xercesImpl.jar ,導入工程中。app
XML標籤都有:jsp
標籤 | 描述 |
---|---|
<x:out> | 與<%= ... >,相似,不過只用於XPath表達式 |
<x:parse> | 解析 XML 數據 |
<x:set> | 設置XPath表達式 |
<x:if> | 判斷XPath表達式,若爲真,則執行本體中的內容,不然跳過本體 |
<x:forEach> | 迭代XML文檔中的節點 |
<x:choose> | <x:when>和<x:otherwise>的父標籤 |
<x:when> | <x:choose>的子標籤,用來進行條件判斷 |
<x:otherwise> | <x:choose>的子標籤,當<x:when>判斷爲false時被執行 |
<x:transform> | 將XSL轉換應用在XML文檔中 |
<x:param> | 與<x:transform>共同使用,用於設置XSL樣式表 |
<x:out> 顯示XPath表達式的結果,相似於<c:out>url
語法:spa
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
select | 須要計算的XPath表達式,一般使用XPath 變量 | 是 | 無 |
escapeXml | 是否忽略XML 特殊字符 | 否 | true |
<x:parse> 用來解析屬性中或標籤主體中的XML數據code
語法:orm
<x:parse xml="xml文本變量" var="使用變量" />xml
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
var | 包含已解析XML數據的變量 | 否 | 無 |
xml | 須要解析的文檔的文本內容(String或Reader) | 否 | Body |
systemId | 系統標識符URI,用來解析文檔 | 否 | 無 |
filter | 應用於源文檔的過濾器 | 否 | 無 |
doc | 須要解析的XML文檔 | 否 | Page |
scope | var屬性的做用域 | 否 | Page |
varDom | 包含已解析XML數據的變量 | 否 | Page |
scopeDom | varDom屬性的做用域 | 否 | Page |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <x:parse xml="${xmltext}" var="output" /> <p>關於第一本書的信息:</p> name:<x:out select="$output/books/book[1]/name" /><br> author:<x:out select="$output/books/book[1]/author" /><br> price:<x:out select="$output/books/book[1]/price" /><br> </body> </html>
//輸出結果爲:
關於第一本書的信息:
name:Padam History
author:ZARA
price:100
<x:set> 爲XPath表達式的值設置一個變量
語法:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
var | 表明XPath表達式值得變量 | 是 | Body |
select | 須要計算的XPath表達式 | 否 | 無 |
scope | var屬性的做用域 | 否 | Page |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <x:parse xml="${xmltext}" var="output" /> <x:set var="fragment" select="$output//book" /> <p>子節點中book節點值爲:<c:out value="${fragment}" /></p> </body> </html>
//輸出結果爲:
子節點中book節點值爲:[]
<x:if> 判斷一個XPath表達式的值,若爲真則執行
語法:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
select | 須要計算的XPath表達式 | 是 | 無 |
var | 存儲條件結果的變量 | 否 | 無 |
scope | var屬性的做用域 | 否 | Page |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <x:parse xml="${xmltext}" var="output" /> <x:if select="$output/books/bookp[1]/price >100"> Book1 prices are very high <x:out select="$output/books/book[1]/price <100" /> </x:if> <x:if select="$output/books/book[2]/price >100"> Book2 prices are very high </x:if> </body> </html>
//輸出結果爲:
Book2 prices are very high
<x:forEach> 循環遍歷各節點
語法:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
select | 須要計算的XPath表達式 | 是 | 無 |
var | 用於存儲當前項目的變量 | 否 | 無 |
begin | 迭代器的開始索引 | 否 | 無 |
end | 迭代器的結束索引 | 否 | 無 |
step | 迭代的步長 | 否 | 無 |
varStatus | 表明迭代器所存儲的狀態的變量 | 否 | 無 |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <x:parse xml="${xmltext}" var="output" /> <p>循環books子節點: <x:forEach select="$output//book" var="item" > <c:out value="${item }" /> </x:forEach> </p> </body> </html>
//輸出結果爲:
循環books子節點: [book: null] [book: null]
<x:choose> 相似於switch標籤
語法:
<x:choose>
<x:when><?x:when>
...
<x:otherwise><x:otherwise>
</x:choose>
<x:when> 判斷條件至關於if,屬於<x:choose>的子標籤
語法:
<x:when select="條件">
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
select | 條件 | 是 | 無 |
<x:otherwise> 至關於switch中的default,屬於<x:choose>的子標籤
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <x:parse xml="${xmltext}" var="output" /> <p>判斷第一本書的做者: <x:choose> <x:when select="$output//book/author='ZARA'"> Book is written by ZARA </x:when> <x:when select="$output//book/author='NUHA'"> Book is written by NUHA </x:when> <x:otherwise> Unknown author </x:otherwise> </x:choose> </p> </body> </html>
//輸出結果爲:
判斷第一本書的做者: Book is written by ZAR
<x:transform> 將XSL轉換應用在XML文檔中
語法:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
doc | 源XML文檔 | 否 | Body |
docSystemId | 源XML文檔的URI | 否 | 無 |
xslt | XSLT 樣式表 | 是 | 無 |
xsltSystemId | 源XSLT文檔的URI | 否 | 無 |
result | 接收轉換結果的對象 | 否 | Print to page |
var | 表明被轉換的XML文檔的變量 | 否 | Print to page |
scope | var屬性的做用域 | 否 | 無 |
<x:param> 在<x:transform>中使用,設置參數名稱
語法:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
name | XSLT參數的名稱 | 是 | Body |
value | XSLT參數的值 | 否 | 無 |
eg:
xsl:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes" /> <xsl:param name="bgcolor" /> <xsl:template match="/"> <html> <body> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="books"> <table border="1" width="100%" bgColor="{$bgcolor}"> <xsl:for-each select="book"> <tr> <td> <i><xsl:value-of select="name" /></i> </td> <td> <i><xsl:value-of select="author" /></i> </td> <td> <i><xsl:value-of select="price" /></i> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
html:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <html> <head> <title>Using JSTL Functions</title> </head> <body> <c:set var="xmltext"> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> <book> <name>Great Mistry</name> <author>NUHA</author> <price>2000</price> </book> </books> </c:set> <c:import url="http://localhost:8080/test2/style.xsl" var="xslt" /> <p>將xml文檔按照格式輸出: <x:transform xml="${xmltext}" xslt="${xslt}" > <x:param name="bgcolor" value="red"/> </x:transform> </p> </body> </html>
//輸出結果爲: