zoukankan      html  css  js  c++  java
  • XML--XSL

    参考

    http://blog.51cto.com/cnn237111/1345998

    https://www.w3.org/TR/2017/REC-xslt-30-20170608/

    声明

    把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。

    根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:

       <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    或者:

       <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template>

    XSL 样式表由一个或多套被称为模板(template)的规则组成.每个模板含有当某个指定的节点被匹配时所应用的规则.

       <xsl:template match="???"> 

      match 属性用于关联 XML 元素和模板.match 属性也可用来为整个文档定义模板.match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档).

    <xsl:value-of>

    <xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中.

       <xsl:value-of select="???"/> 

      select 属性的值是一个 XPath 表达式.

    <xsl:for-each> 

    <xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素.

       <xsl:for-each select="???">...</xsl:for-each> 

      select 属性的值是一个 XPath 表达式.

    <xsl:sort>

    <xsl:sort> 元素用于对结果进行排序.

    如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素.

       <xsl:sort select="???"/> 

      select 属性指示需要排序的 XML 元素.

    <xsl:if>

    <xsl:if> 元素用于放置针对 XML 文件内容的条件测试.

       <xsl:if test="expression">...如果条件成立则输出...</xsl:if> 

      必选的 test 属性的值包含了需要求值的表达式.

    <xsl:choose>

    XSLT <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试.

       <xsl:choose> 

         <xsl:when test="expression">... 输出...</xsl:when>   

         <xsl:otherwise>... 输出....</xsl:otherwise> 

       </xsl:choose> 

    <xsl:apply-templates>

    http://blog.51cto.com/cnn237111/1345998

    <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点.

    <xsl:apply-templates/>总是包含在<xsl:template />中,当转换软件遇到这个语句时,就会对 <xsl:apply-templates/>所匹配的元素进行转换(所匹配的元素由select属性设置,该值是一个XPath中的路径表达式,并且和<xsl:template />中的match相关)。

    <xsl:apply-templates/>在对元素应用模板的时候,会去文档中查看是否存在一个对应的模板(即该模板定义了如何转换 <xsl:apply-templates/>匹配的元素)。所谓处理转换,实际上就是把XML文档中的值,代入模板,并输出代入后的模板内容,类似变量赋值。

    Demo

    employee.xml

     1 <?xml version="1.0" encoding="UTF-8"?> 
     2 <?xml-stylesheet type="text/xsl" href="employee.xsl"?> 
     3 <employees> 
     4     <employee sn="E-200402100001"> 
     5         <name>zhangsan</name> 
     6         <age>25</age> 
     7         <monthly_pay mode="cash"> 
     8             1200.00 
     9         </monthly_pay> 
    10         <country>
    11             <en>CHN</en>
    12             <chinese>ZhongGuo</chinese>
    13         </country>
    14     </employee> 
    15     <employee sn="E-200402100006"> 
    16         <name>lisi</name> 
    17         <age>28</age> 
    18         <monthly_pay mode="cash"> 
    19             1600.00 
    20         </monthly_pay> 
    21         <country>
    22             <en>CHN</en>
    23             <chinese>ZhongGuo</chinese>
    24         </country>
    25     </employee> 
    26     <employee sn="E-200503220001"> 
    27         <name>wangwu</name> 
    28         <age>30</age> 
    29         <monthly_pay mode="credit_card"> 
    30             3500.00 
    31         </monthly_pay> 
    32         <country>
    33             <en>CHN</en>
    34             <chinese>ZhongGuo</chinese>
    35         </country>
    36     </employee> 
    37 </employees>

    employee.xsl

    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
        <html> 
            <head> 
                <title>employees info</title> 
            </head>
            <body>
                <xsl:apply-templates select="//employee"/>
            </body>
        </html>
    </xsl:template> 
    <xsl:template match="employee">
        <xsl:for-each select=".">
            <xsl:value-of select="name"/>
            <xsl:if test="age &gt; 27">
                -- <xsl:value-of select="age"/>
            </xsl:if>
            <br/>
        </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>

    结果

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/microcat/p/10396034.html
Copyright © 2011-2022 走看看