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:参数值

原文地址:https://www.cnblogs.com/yangy608/p/2806724.html