我正在使用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