我正在使用xslt将xml文档转换为HTML以用于电子邮件中。我需要将xml元素与另一个xml元素值进行比较,以便我知道给出该值的格式。基本上我有一个XML结构,例如:如何比较XML元素与XSL变量
<main>
<comparer>1</comparer>
<items>
<item>
<name>blarg</name>
<values>
<value>1</value>
<value>2</value>
</values>
</items>
</main>
品种信息被用来建立一个表:
<table>
<tr>
<td>blarg</td>
<td>1</td>
<td>2</td>
</tr>
</table>
我需要能够做的是使用XSL来比较项目值与'比较'节点值,如果他们相等,然后加粗表格中的单元格,否则单元格值我鼻子粗体。我需要在不使用JavaScript的情况下完成此操作,因此必须在xsl中完成。现在,我正在查看使用xsl:变量,然后尝试使用xsl:何时进行比较。不幸的是,我很幸运。这是我刚开始玩为表中的每一行:
<xsl:variable name="compare" select="//main/comparer" />
...
<xsl:for-each select="value">
<td>
<xsl:choose>
<xsl:when test=". = $compare">
<b>
<xsl:value-of select="."/>
</b>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>.
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
* 注意:我离开了大部分的XSL的赘述。我只是想着重讨论我的问题。
有没有一种方法,我不会重构文档使用模板?例如: –
2010-09-28 22:42:53
@gun_shy:模式匹配**是** XSLT的内容。对于测试,使用节点集合比较:'。 =/main/comparer',就像我在模式谓词中所做的那样。 – 2010-09-29 12:44:35