JSTL XML标签库
JSTL XML processing 标签库:为程序设计者提供了基本的对 XML 格式文件的操作
被分为了三类,分别是:
XML 核心标签: <x:parse> 、 <x:out> 、 <x:set>
XML 流控制标签: <x:if> 、 <x:choose> 、 <x:when> 、 <x:otherwise> 、 <x:forEach>
XML 转换标签: <x:transform> 、 <x:param>
1.<x:parse> 标签:解析 XML 文件
属性描述
doc:源 XML 的内容,该属性的内容应该为String类型或者java.io.Reader的实例,可以用xml属性来替代,但是不推荐
var:将解析后的XML保存在该属性所指定的变量中,之后XML processing标签库中的其他标签若要取XML中的内容就可以从该变量中得到(可选)
scope:变量的作用范围(可选)
varDom:指定保存的变量为 org.w3c.dom.Document 接口类型(可选)
scopeDom:org.w3c.dom.Document 的接口类型变量作用范围(可选)
systemId:定义一个URI,该URI将被使用到XML文件中以接入其他资源文件(可选)
filter:该属性必须为 org.xml.sax.XMLFilter 类的一个实例,可以使用EL表达式传入,将对 XML 文件做过滤得到自身需要的部分(可选)
其中,var、scope和varDom、scopeDom不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被 XML processing 标签库的其他标签来使用
如:导入本地的xml文件并用<x:parse> 标签进行解析
<x:parse var="sampleXML">
<c:import url="/sample.xml" />
</x:parse>
2.<x:out> 标签
属性描述
select:XPath语句
escapeXml:是否转换特殊字符,默认为true
如,输出下面xml文件中name的值:
<x:parse var="sampleXML">
<goods>
<item id="1">
<name>b</name>
<price>40</price>
</item>
</goods>
</x:parse>
<x:out select="$sampleXML/goods/item/name"/>
3.<x:set>标签
属性描述
select:XPath语句
var:将从XML文件中取得的内容存储到varName中
scope:变量范围
如,取出item节点,再用<x:out> 标签输出它的子节点的值:
<x:set select="$sampleXML//item" var="item"/>
<x:out select="$item/name" />
4.<x:if>标签
属性描述
select:XPath语句,如果为true,则执行<x:if>中的内容
var:将从XML文件中取得的内容存储到varName中
scope:变量范围
如:当存在item的id属性为1的节点时输出right!
<x:if select="$sampleXML/goods/item[@id=1]/name">
right!
</x:if>
5.<x:choose>、<x:when>和<x:otherwise>标签
与core标签的内容一样,只是<x:when>使用的XPath语句,其他两个都没有属性
如:当存在item的id属性为1的节点时输出right!,否则输出wrong
<x:choose>
<x:when select="$sampleXML/goods/item[@id=1]/name">
right!
</x:when>
<x:otherwise>
wrong!
</x:otherwise>
</x:choose>
6.<x:foreach>标签,与<c:forEach>相似
属性描述
var:设定变量存储到现在浏览到的节点
select:XPath语句,决定被浏览的部分
varStatus:存放现在指导的相关成员信息
begin:开始位置
end:结束位置
step:每次迭代的间隔数
如:输出所有item的name属性
<x:parse var="sampleXML">
<goods>
<item id="1">
<name>a</name>
<price>10</price>
</item>
<item id="2">
<name>b</name>
<price>20</price>
</item>
</goods>
</x:parse>
<x:forEach select="$sampleXML//item">
<x:out select="name" />
</x:forEach>
7.<x:transform>标签:使用XSLT重新包装XML文件
属性描述
doc:XML文件
xslt:要套用的XSLT样式
docSystemId:XML文件的URI
result:转换结果的对象
xsltSystemId:XSLT文件的URI
var:存放转换后的文件
scope:var变量的范围
xml:
xmlSystemId:
如:
<c:import var="xmlDoc" url="${xmlUrl}" />
<c:import var="xsltStyleSheet" url="${xsltUrl}" />
<x:transform doc="${xmlDoc}" xslt="${xsltStyleSheet}">
8.<x:param>标签:用来设置<x:transform>的参数
属性描述
name:参数名称
value:参数值