⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0403-0400.htm

📁 xml帮助文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0403-0400 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 4.3.4 XSLT句法与函数</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
	FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>


<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0 
onload=""><!-- 以下为主体内容 -->
<div align="center">
  <center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  <TBODY>
  <TR vAlign=top>
    <TD width=47 rowSpan=2></TD>
    <TD vAlign=center width="535" >
    <p align="center"><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=44 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="535" ><!-- 正文内容 -->
      <DIV class=pt10><B>4.3.4 XSLT句法与函数</B></DIV>
    &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <P>从前面的例子中,相信读者已经大概了解了XSLT的一般形态及功能。在这一小节里,我们再来综合地论述一下。 
      <OL>
        <LI><STRONG>文档结构</STRONG> </LI></OL>
      <P>前面说过,XSLT文档本身是XML文档,因此文档的第一句自然是:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version="1.0" 
      ?&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>接下来是样式单部分:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:stylesheet version="1.0" 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;<BR>… 
            …<BR>&lt;/xsl:stylesheet&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>也可以写作:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:transform version="1.0" 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;<BR>… 
            …<BR>&lt;/xsl:transform&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>xsl:transform与xsl:stylesheet具有相同的含义,都表示元素所包含的内容为样式单。xsl:stylesheet元素必须包含有"version"属性,用以指示该XSL文档遵从哪一个版本的XSL标准。另外,xmlns:xsl指示了XSL的命名空间,在XSLT标准中,定义了XSLT的命名空间为http://www.w3.org/1999/XSL/Transform。</P>
      <P>XSLT在进行转换时,首先遍历XML源文档树,找到要处理的节点,然后将定义好的模板信息施加到该节点中。 
      <OL>
        <LI type=disc value=2><STRONG>模板及应用</STRONG> </LI></OL>
      <P>xsl:template是模板元素,通常每个xsl:template有一个节点匹配属性,由"match="指定。在对模板进行匹配时使用"xsl:apply-templates",选择要匹配的模板,相当于一个调用的过程。对节点的匹配规则遵照XPath。</P>
      <P>不同的模板设计,可以导致同一个文档有不同的输出效果。xsl:template元素有一个mode属性,可以根据需要去匹配不同模式的模板。若将前例作如下修改:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:template match="/" mode="blue"&gt; 
            <BR>&nbsp;&nbsp;&nbsp; …<BR>&lt;TITLE&gt;学生花名册&lt;/TITLE&gt; 
            <BR>&lt;STYLE&gt; .title{font-size:15pt; font-weight:bold; 
            color:blue }<BR>…
            <P>&lt;xsl:template match="/" mode="red"&gt; <BR>&nbsp;&nbsp;&nbsp; 
            …<BR>&lt;TITLE&gt;学生花名册&lt;/TITLE&gt; <BR>&lt;STYLE&gt; 
            .title{font-size:15pt; font-weight:bold; color:red 
        }<BR>…</P></TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>如果要将TITLE输出为蓝色,则用下面语句匹配:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:apply-templates select="/" 
          mode="blue"/&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>如果要将title输出为红色,则写为:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:apply-templates select="/" 
          mode="red"/&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>此外,模板总是与节点相对应的,一个节点可能对应于不同的模板,那么如何确定各模板匹配的先后次序呢?XSLT中可为xsl:template设置优先级,写法是:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:template match="student" priority="n"&gt; 
            &nbsp; //n为优先级数</TD></TR></TBODY></TABLE></CENTER></DIV>
      <OL start=3>
        <LI><STRONG>计算节点值</STRONG> </LI></OL>
      <P>在使用XSLT进行转换时,常常需要获取节点值,使用xsl:value-of元素可达到这个目的,如下例:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:value-of 
      select="origin"/&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>得到的是学生原籍的值,select属性指定要获取的是哪一个节点的节点值。 
      <OL start=4>
        <LI><STRONG>循环处理</STRONG> </LI></OL>
      <P>使用xsl:for-each可对所选节点依次进行处理,如例中在生成表格处理中,就是利用循环将各个学生的信息取出放入表格中的,写法是:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;xsl:for-each select="student" 
            order-by="name"&gt; 
      …&lt;/xsl:for-each&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <OL start=5>
        <LI><STRONG>排序</STRONG> </LI></OL>
      <P>对于用xsl:for-each或xsl:apply-templates匹配的节点,可使用xsl:sort将所选节点内容进行排序,如:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="90%" border=1>
        <TBODY>
        <TR>
          <TD align=middle width="20%"><STRONG>排序方式</STRONG></TD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -