📄 conditional templates.htm
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<TITLE>条件模板</TITLE>
<style type="text/css">
<!--
.normal10 { font-size: 11pt}
.normal9 { font-size: 9pt}
a{ text-decoration: none }
a:hover{ color:Red;text-decoration:underline }
a {
font-size:11pt;
COLOR: cornflowerblue;
FONT-FAMILY: "新细明体", "宋体";
FONT-WEIGHT: bold
}
.normal105 { font-size: 11pt}
.p { font-size: 11pt}
-->
</style>
<link rel="stylesheet" href="../../Global.css" tppabs="http://www.xml.org.cn:8188/Global.css"></HEAD>
<BODY>
<p ALIGN="CENTER" class="normal105">[<a href="../../default.asp.htm" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>][<font face="宋体" lang="ZH-CN"><a href="../application.htm" tppabs="http://www.xml.org.cn:8188/application/application.htm" target="_parent">返回应用</a></font>]</p>
<table width="85%" border="0" align="center" class="normal105">
<tr>
<td width="22%" height="70"> </td>
<td width="53%" height="70">
<h2 align="center"><font face="宋体">条件模板</font></h2>
</td>
<td width="25%" height="70"><a name="top"></a></td>
</tr>
<tr>
<td colspan="3" height="826">
<p><span class="normal105">上一篇:<a href="Sorting XML.htm" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Sorting%20XML.htm" class="normal105">给Xml数据排序</a>
</span><br>
<span class="normal105">返 回 :<a href="Getting Started with XSL.htm" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Getting%20Started%20with%20XSL.htm" class="normal105">开始学习样式表
</a></span></p>
<p><span class="normal105">仅当确定的条件存在于原文档中,条件模板才会被输出.Xsl通过<font face="Arial"><xsl:if></font><font face="宋体">和</font>
<font face="Arial"><xsl:choose></font>元素来定义条件模板.</span></p>
<p><span class="normal105">注意 下面portfolio据它含有名为"exchange"属性的"stock"元素.仅当该属性含有特定的数值的时候,你可能希望产生一些输出.</span></p>
<pre class=clsCode><span class="normal105"><font face="Arial" class="normal105"><?xml version="1.0"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes">
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>
</stock>
<stock exchange="nasdaq">
<name>zysmergy inc</name>
<symbol>ZYSZ</symbol>
<price dt:dt="number">20.313</price>
</stock>
</portfolio></font></span></pre>
<p><span class="normal105">你可以在表格中简单的生成另一行放置属性值的行数据.但是假设你希望不是通过一个完全新的表格行指出从一个特别指定的交易所里的股票,而是通过在该行后面用*号注释起来的方法.<b><xsl:if></b>提供了一个机制用于在输出树里有条件的插入数据.</span></p>
<p><span class="normal105">在下面的样例中,<b><xsl:if></b>元素在纳斯达克股票交易所上市的股票的标记(symbol)后面插入一个星号"*".<b><xsl:if></b>内容可以是简单的文本,就像是这个样例中一样,或者是元素,属性以及任何Xsl允许的的结构.</span></p>
<pre class=clsCode><span class="normal105"><font face="Arial" class="normal105"><?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>Symbol</TD>
<TD>Name</TD>
<TD>Price</TD>
</TR>
<xsl:for-each select="portfolio/stock">
<TR>
<TD>
<xsl:value-of select="symbol"/>
<b><xsl:if test="@exchange[.='nasdaq']">*</xsl:if></b>
</TD>
<TD><xsl:value-of select="name"/></TD>
<TD><xsl:value-of select="price"/></TD>
</TR>
</xsl:for-each>
</TABLE>
<P>* Listed on Nasdaq stock exchange</P>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet></font></span></pre>
<p> <span class="normal105"><b>test</b> 属性得到一个Xsl模式.如果通过模式来描述的查询选择一个或多个节点,<b><xsl:if></b>模板会被插入.如果选择集是空的话,这个条件模板会被跳过.既然如此,该查询会检查是否股票("stock")元素含有一个"exchange"属性,进一步是检查这个exchange值属性是否等于"nasdaq".关于更多的使用方括号"[]"限制一个模式,和构建有比较的模式的信息参见<a
href="../../../msdn.microsoft.com/xml/xslguide/patterns-overview.asp" tppabs="http://msdn.microsoft.com/xml/xslguide/patterns-overview.asp">XSL Patterns</a>.</span></p>
<p><span class="normal105"><b>尝试!</b> 这个样式表应用于 <a
href="../../../msdn.microsoft.com/xml/samples/portfolio/portfolio-if.xml" tppabs="http://msdn.microsoft.com/xml/samples/portfolio/portfolio-if.xml">Portfolio
Sample (Show Exchange)</a>.</span></p>
<p><span class="normal105"><a
href="../../../msdn.microsoft.com/xml/samples/portfolio/portfolio-if.zip" tppabs="http://msdn.microsoft.com/xml/samples/portfolio/portfolio-if.zip"><img
alt=Download border=0 height=20 src="Conditional Templates.files/icodownl.gif" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Conditional%20Templates.files/icodownl.gif"
width=16> Download this sample</a>. </span></p>
<h2><span class="normal105"><font color="#000000">其它可供选择的办法</font></span></h2>
<p> <span class="normal105"><b><xsl:choose></b> 元素提供了一个"两者只能选其一"的处理机制.<b><xsl:choose></b>
包括了一系列的被测试的<b><xsl:when></b>元素以便从头到底检查直到找到有一个匹配元素.<b> </b>如果没有匹配的元素被找到<b><xsl:otherwise></b>元素能被用于插入一个模板.</span></p>
<p><span class="normal105">下面的代码能加入上面的样例以便通过把价格在0-25之间的标记为绿色,25-50显示为蓝色,50+显示为红色的方法来用不同颜色标记行数据.</span></p>
<pre class=clsCode><span class="normal105"><font color="#000000" face="Arial" class="normal105"><TR>
<xsl:attribute name="STYLE">color:
<xsl:choose>
<xsl:when test="price[. $le$ 25]">green</xsl:when>
<xsl:when test="price[. $le$ 50]">blue</xsl:when>
<xsl:otherwise>red</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<TD>
...</font></span></pre>
<p><span class="normal105"> $le$ 操作符 (小等于) 是一个在<a href="../../../www.w3.org/TandS/QL/QL98/pp/xql.html" tppabs="http://www.w3.org/TandS/QL/QL98/pp/xql.html" target=_top>XQL
Proposal</a> 中描述的Xsl模式扩展,它不是1998年12月份的工作草案的一部分</span></p>
<p><span class="normal105"><b>尝试!</b> 点击<a
href="../../../msdn.microsoft.com/xml/samples/portfolio/portfolio-choose.xml" tppabs="http://msdn.microsoft.com/xml/samples/portfolio/portfolio-choose.xml">Portfolio
Sample (Show Price Range)</a>.观看样例. </span></p>
<p><span class="normal105"><a
href="../../../msdn.microsoft.com/xml/samples/portfolio/portfolio-choose.zip" tppabs="http://msdn.microsoft.com/xml/samples/portfolio/portfolio-choose.zip"><img
alt=Download border=0 height=20 src="Conditional Templates.files/icodownl.gif" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Conditional%20Templates.files/icodownl.gif"
width=16> Download this sample</a>. </span></p>
</td>
</tr>
<tr>
<td colspan="3" height="2"><font face="宋体" lang="ZH-CN" size=3> </font> <rev></rev><font face="宋体" lang="ZH-CN" size=3></font>
<hr size="1">
<p align="center"><font face="宋体" lang="ZH-CN">[<a href="#top">返回标题</a>][<a href="../application.htm" tppabs="http://www.xml.org.cn:8188/application/application.htm" target="_parent">返回应用</a>][<a href="../../default.asp.htm" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>][<a href="mailto:xmlteam@egroups.com">欢迎投稿</a>]</font></p>
<p align="center">最后更新:1999年9月15日<br>
<font color="#FF0033" size="-1">本站点所刊文章版权,均归本站点所有。署名作者拥有其著作权。<br>
未经</font><font color="#FF0033"><a href="mailto:xmlteam@egroups.com"><font color="#6666FF" size="-1">允许</font></a></font><font color="#FF0033" size="-1">,不得随意转载,违者必究!!</font>
</p>
</td>
</tr>
</table>
<h2 ALIGN="CENTER"> </h2>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></FONT>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -