• XML标签


    SQL标签库提供了创建和操作XML文档的标签。

    引入语法:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

    导入包:http://www.apache.org/dist/xerces/j/ 进行下载

    解压,提取xalan.jar 和 xercesImpl.jar ,导入工程中。

    XML标签都有:

    标签描述
    <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>

    语法:

    属性描述是否必要默认值
    select 需要计算的XPath表达式,通常使用XPath 变量
    escapeXml 是否忽略XML 特殊字符 true

    <x:parse> 用来解析属性中或标签主体中的XML数据

    语法:

    <x:parse xml="xml文本变量" var="使用变量" />

    属性描述是否必要默认值
    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>

    //输出结果为:

  • 相关阅读:
    虚拟机virtualBox
    在scala命令行中加入类库
    使用git submodule
    Julia1.x安装
    texshop 使用技巧
    vimdiff换行
    双系统磁盘挂载失败
    www.wolframalpha.com
    sublime3激活方法
    实验数据
  • 原文地址:https://www.cnblogs.com/blog-yuesheng521/p/5530313.html
Copyright © 2020-2023  润新知