Surance Center

xsl教程学习笔记

. Hello world  尝试:

=============Hello.xml:=================

<?xml version="1.0" encoding="UTF-8"?>

       <?xml-stylesheet type="text/xsl" href="test.xsl"?>

<FistNode>

,World

</FistNode>

 

 

===============test.xsl:==================

<?xml version="1.0" encoding="UTF-8"?>

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

 

       <xsl:template match="/">

              <html>

                     <head>

                            <title>First node</title>

                     </head>

                     <body>

                            <p>

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

                            </p>

                     </body>

              </html>

       </xsl:template>

</xsl:stylesheet>

 

运行结果:

Hello,World

.  XSLT元素列表

元素名

含义

xsl:apply-imports

调用重新模板规则

xsl:apply-template

指示XSLT处理器根据每个选定节点的类型和上下文 找到合适的模板

xsl:attribute

创建一个属性节点并将其附加到输出元素上

xsl:attribute-set

定义命名的属性集

xsl:call-template

按名称调用模板

xsl:choose

提供多个与<xsl:otherwise> 元素 <xsl:when> 元素有关的条件测试

xsl:comment

在输出中生成注释

xsl:copy

将当前节点从源复制到输出

xsl:copy-of

将子树和结果树片段插入结果树

xsl:decimal-fomat

声明一个小数格式,用于控制formate-number 函数所使用的格式模式解释

xsl:element

在输出中创建指定名称的元素

xsl:fallback

调用可以 为遇到的新的元素的行为 提供合适的替代行为的 模板

xsl:for-each

重复应用模板,对接点集中的每个节点应用模板

xsl:if

允许简单条件模板片段

xsl:import

导入另外一个xslt文件

xsl:include

包含另一个xsl文件

xsl:key

声明一个命名的键,用于XPath表达式中的Key()函数

xsl:message

将文本消息发送到消息缓冲区或者对话框

xsl:namespace-alias

使用其他前缀替换 与给定命名空间关联的前缀

xsl:number

将和格式化的数字插入结果树

xsl:otherwise

提供多个与<xsl:choose>元素和<xsl:when>元素有关的条件测试

xsl:ouput

指定在序列化结果树时使用的选项

xsl:param

声明一个命名参数,<xsl:stylesheet>元素或者<xsl:template>元素中使用.允许制定默认值

xsl:preserve-space

在文档中保留空白

xsl:sort

指定<xsl:for-each>或者<xsl:apply-template>所选节点列表的排序条件

xsl:stylesheet

指定xslt文件的文档元素.文档元素包含其他XSLT元素

xsl:template

定义一个可以再次使用的模板,用于为特定类型和上下文的节点生成所需要的输出

xsl:text

在输出中生成文本

xsl:transform

执行与<xsl:stylesheet>相同的功能

xsl:value-of

将选定节点的值作为文本插入

xsl:variable

指定表达式中绑定的值

xsl:when

提供多个与<xsl:choose>元素和<xsl:otherwise>有关的测试条件

xsl:with-param

将参数传递给模板

xsl:strip-space

从文档中删除空白

 

 

  xsl:template  xsl:apply-template

模板有2部分构成:匹配模式  执行.

匹配模式 指定了采用哪个模板  xsl:template

执行指定了如何输出 xsl:apply-template

1.xsl:template语法

<xsl:template natch=pattern name=qname priority=number mode=qname>

<!—执行内容à

</xsl:template>

 

name:唯一的名称,便于引用

match:原节点模式  name 必有其一    

priority :-9-9的数字

mode :允许多次处理某个元素, 每次产生不同的结果. match就不可以有mode.  

 

 

eg:

==========test.xml=============

<?xml version="1.0" encoding="UTF-8"?>

<company>

       <department>

              <name language="Chinese">Tech Department</name>

              <leader>Zhang San</leader>

              <quantity>20</quantity>

              <target>software develop</target>

       </department>

       <department>

              <name language="Chinese">Sale Department</name>

              <leader>Li Si</leader>

              <quantity>20</quantity>

              <target>Sale work</target>

       </department>

</company>

1.匹配所有的部门

<xsl:template match=”department”></xsl:template>

2.匹配所有的领导和所有的人数元素

<xsl:template match=”leader|quantity”></xsl:template>

3.匹配所有父节点为 部门的 领导元素

<xsl:template match=”department//leader”></xsl:template>

3.匹配根节点

<xsl:template match=”/”></xsl:template>

 

2.xsl:apply-templates

语法:

<xsl:apply-templates select=node set-expression mode=qname></xsl:apply-templates>

用来 表示 哪个节点被模板具体处理.可以理解为 调用子函数 select用来选择确切的节点名字. xsl:apply-templates 总是在 xsl: template

1.模板匹配整个文档(根节点), 具体执行时 处理根节点下的所有部门元素.

 

<xsl:template match=”/”>

       <xsl:apply-template select=”department”/>

</xsl:template>

2.模板匹配 部门 节点. 具体执行时 部门下所有的子元素都将被处理

<xsl:template match=”para”>

       <p><xsl:apply-template /></p>

</xsl:template>

 

 

xsl:value-of

用来将 文档中的元素 文本 写入到  输出文档中.

1.       提取出部门中每个领导人的名字

<xsl:template match=”department”>

       < xsl:value-of select=”leader”/>

</xsl:template>

 

心得: <xsl:template match=”department”>表示一个范围,然后value-ofapply-template明确指出到底是哪些元素

 

 

xsl:for-each

循环处理被选择的元素.

1.       提取每个部门的领导人

<xsl:template match=”company”>

       <xsl:selct

       < xsl:value-of select=”leader”/>

</xsl:template>

 

xsl:if

语法:

<xsl:if test=布尔表达式>

       templatebody

</xsl:if>

 

1.       检测部门节点下的所有元素,如果有领导就将领导输出.

<xsl:template match="department">

              <xsl:if test="leader">

                     <p><xsl:value-of select="leader"/></p>

              </xsl:if>

</xsl:template>

 

xsl:choose xsl:when xsl:otherwise

       <xsl:template match="department">

              <xsl:choose>

                     <xsl:when test="leader='Li Si'">

                            <p>

                                   <font color="red">

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

                                   </font>

                            </p>

                     </xsl:when>

                     <xsl:when test="leader">

                            <p>

                                   <font color="green"></font>

                            </p>

                     </xsl:when>

                     <xsl:otherwise>

                     leader!

                     </xsl:otherwise>

              </xsl:choose>

       </xsl:template>

 

xsl:sort

<xsl:template match="company">

              <p>

                     <xsl:apply-templates select="department">

                            <xsl:sort select="leader"/>

                     </xsl:apply-templates>

              </p>

      

       </xsl:template>

 

 

 

.综合实例:

============test.xml===============

<?xml version="1.0" encoding="UTF-8"?>

       <?xml-stylesheet type="text/xsl" href="test.xsl"?>

<company>

       <department>

              <name language="Chinese">Tech Department</name>

              <leader>Zhang San</leader>

              <quantity>20</quantity>

              <target>software develop</target>

       </department>

       <department>

              <name language="Chinese">Sale Department</name>

              <leader>Li Si</leader>

              <quantity>20</quantity>

              <target>Sale work</target>

       </department>

</company>

============test.xsl:===========

<?xml version="1.0" encoding="UTF-8"?>

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

 

       <xsl:template match="/">

              <html>

                     <head>

                            <title>First node</title>

                     </head>

                     <body>

                            <p>

                                   <xsl:value-of select="/company/department"/>

                            </p>

                            <p>

                                   <xsl:apply-templates select="company"/>

                            </p>

                           

                           

                     </body>

              </html>

       </xsl:template>

      

 

       <xsl:template match="company">

              <p>

                     <xsl:apply-templates select="department">

                            <xsl:sort select="leader"/>

                     </xsl:apply-templates>

              </p>

             

              <xsl:for-each select="child::department">

                     <p><xsl:value-of select="leader"/></p>

              </xsl:for-each>

       </xsl:template>

 

      

      

       <xsl:template match="department">

              <xsl:choose>

                     <xsl:when test="leader='Li Si'">

                            <p>

                                   <font color="red">

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

                                   </font>

                            </p>

                     </xsl:when>

                     <xsl:when test="leader">

                            <p>

                                   <font color="green"><xsl:value-of select="leader"/></font>

                            </p>

                     </xsl:when>

                     <xsl:otherwise>

                     leader!

                     </xsl:otherwise>

              </xsl:choose>

       </xsl:template>

 

</xsl:stylesheet>

 

===========运行结果==============

Tech Department Zhang San 20 software develop

Li Si

Zhang San

Zhang San

Li Si

posted @ 2007-06-07 19:33  xxp  阅读(594)  评论(0编辑  收藏  举报
Surance Center