茂爷的博客
:: 向左走向右走::

在相遇的城市迷失之前
寻找一张似曾相识的脸
握在手中的风筝
断了线
是因为我寂寞
你才出现
还是你的存在让我自怜
缘分走过我身边
变成答录机遥远的留言
甜蜜在梦幻的一瞬间
留下了真实的思念
一段情就能连接两个人的天
一条路就能让两个人霎那之间
命运都改变
只要愿意相信就能相见
一滴泪就能挡住两个人的天
模糊我的视线
呼唤着你名字
从起点回到原点
两条平行线总有交汇的一天
是命运在转变
你才出现
还是你的出现让我改变
一个巧合的意外
变成一场最执着的迷恋
甜蜜在梦幻的一瞬间
留下了真实的思念

Directs the XSLT processor to find the appropriate template to apply, based on the type and context of each selected node
这是
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/c29938be-2666-4f62-b477-fa01e6e1fd43.asp
中对它的解释。
就是说xslt处理器(IE等可解析xslt的浏览器)通过被选择的节点来找到合适的模板。
然后去匹配它们。

语法结构如下:

<xsl:apply-templates
select = Expression
mode = QName
</xsl:apply-templates>
Attributes

select     :通过xpath来查询(找到)xml数据中的节点 (先简单的介绍一下常用的 "*" ,"/",".")
              “*“表示所有同级节点。”/“表示节点级别层次关系如select=”aaa/*“就表示aaa节
               点下所有子节点。“.”代表本身。如果不大了解可以查阅 Patterns
 mode     :可以使用mode 来使的templete被使用多次。每次有不同的结果。它只匹配
                 路径匹配且mode一样的templete

 

XML File (customers.xml)

Xml
<?xml version="1.0"?>
            <?xml-stylesheet type="text/xsl" href="applyt.xsl" ?>
            <customers>
            <customer>
            <name>John Smith</name>
            <address>123 Oak St.</address>
            <state>WA</state>
            <phone>(206) 123-4567</phone>
            </customer>
            <customer>
            <name>Zack Zwyker</name>
            <address>368 Elm St.</address>
            <state>WA</state>
            <phone>(206) 423-4537</phone>
            </customer>
            <customer>
            <name>Albert Aikens</name>
            <address>368 Elm St.</address>
            <state>WA</state>
            <phone>(206) 423-4537</phone>
            </customer>
            <customer>
            <name>Albert Gandy</name>
            <address>6984 4th St.</address>
            <state>WA</state>
            <phone>(206) 433-4547</phone>
            </customer>
            <customer>
            <name>Peter Furst</name>
            <address>456 Pine Av.</address>
            <state>CA</state>
            <phone>(209) 765-4321</phone>
            </customer>
            <customer>
            <name>Dan Russell</name>
            <address>9876 Main St.</address>
            <state>PA</state>
            <phone>(323) 321-7654</phone>
            </customer>
            </customers>
            

XSLT File (applyt.xsl)

Xml
<?xml version="1.0"?>
            <xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
            <xsl:template match="/">
            <HTML>
            <BODY>
            <TABLE border="1" cellspacing="0" cellpadding="2">
            <xsl:apply-templates select="customers/customer">
            <xsl:sort select="state"/>
            <xsl:sort select="name"/>
            </xsl:apply-templates>
            </TABLE>
            </BODY>
            </HTML>
            </xsl:template>
            <xsl:template match="customer">
            <TR>
            <xsl:apply-templates select="name" />
            <xsl:apply-templates select="address" />
            <xsl:apply-templates select="state" />
            <xsl:apply-templates select="phone" />
            <xsl:apply-templates select="phone" mode="accountNumber"/>
            </TR>
            </xsl:template>
            <xsl:template match="name">
            <TD STYLE="font-size:14pt font-family:serif">
            <xsl:apply-templates />
            </TD>
            </xsl:template>
            <xsl:template match="address">
            <TD> <xsl:apply-templates /> </TD>
            </xsl:template>
            <xsl:template match="state">
            <TD> <xsl:apply-templates /> </TD>
            </xsl:template>
            <xsl:template match="phone">
            <TD> <xsl:apply-templates /> </TD>
            </xsl:template>
            <xsl:template match="phone" mode="accountNumber">
            <TD STYLE="font-style:italic">
            1-<xsl:value-of select="."/>-001
            </TD>
            </xsl:template>
            </xsl:stylesheet>
            

Output

This is the formatted output:

Formatted output

This is the processor output:

<HTML>
            <BODY>
            <TABLE border="1" cellspacing="0" cellpadding="2">
            <TR>
            <TD STYLE="font-size:14pt font-family:serif">Peter Furst</TD>
            <TD>456 Pine Av.</TD>
            <TD>CA</TD>
            <TD>(209) 765-4321</TD>
            <TD STYLE="font-style:italic">
            1-(209) 765-4321-001
            </TD>
            </TR>
            <TR>
            <TD STYLE="font-size:14pt font-family:serif">Dan Russell</TD>
            <TD>9876 Main St.</TD>
            ...
            </TR>
            </TABLE>
            </BODY>
            </HTML>
posted on 2007-05-22 17:22  茂爷的blog  阅读(774)  评论(0)    收藏  举报