我想知道如果文本匹配,如何用图像替换字符串AUD
。我有这个xsl代码,不知道如何使用if条件,因为我是xsl编码的新手。
<xsl:template match="/">
<table class="headingstable">
<tr>
<th class="headingstop">Title</th>
<th class="headingstop">Country</th>
<th class="headingstop">Date</th>
</tr>
<xsl:for-each select="weeklyevents/event">
<tr>
<td class="headingsmid"><xsl:value-of select="title"/></td>
<td class="headingsmid"><xsl:value-of select="country"/></td>
<td class="headingsmid"><xsl:value-of select="date"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
国家选择可以是显示结果中的四个之一:美国,澳大利亚,英国和JP。所以我想创建一个IF条件“ if string = UK then <img src="../uk.jpg" />
我不知道该怎么做,但尝试了很多次:
<xsl:template match="country[. = 'UK']">
<img src="../uk.jpg" />
</xsl:template>
我该怎么做呢?
更新#1,这是我的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<weeklyevents>
<event>
<title>AIG Services Index</title>
<country>AUD</country>
<date><![CDATA[05-04-2014]]></date>
</event>
<event>
<title>Bank Holiday</title>
<country>JPY</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>MI Inflation Gauge m/m</title>
<country>AUD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>ANZ Job Advertisements m/m</title>
<country>AUD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Building Approvals m/m</title>
<country>AUD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>HSBC Final Manufacturing PMI</title>
<country>CNY</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Bank Holiday</title>
<country>GBP</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Sentix Investor Confidence</title>
<country>EUR</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>EU Economic Forecasts</title>
<country>EUR</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>PPI m/m</title>
<country>EUR</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Eurogroup Meetings</title>
<country>EUR</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Final Services PMI</title>
<country>USD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>ISM Non-Manufacturing PMI</title>
<country>USD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Loan Officer Survey</title>
<country>USD</country>
<date><![CDATA[05-05-2014]]></date>
</event>
<event>
<title>Bank Holiday</title>
<country>JPY</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Trade Balance</title>
<country>AUD</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Cash Rate</title>
<country>AUD</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>RBA Rate Statement</title>
<country>AUD</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Spanish Unemployment Change</title>
<country>EUR</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Spanish Services PMI</title>
<country>EUR</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Italian Services PMI</title>
<country>EUR</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Final Services PMI</title>
<country>EUR</country>
<date><![CDATA[05-06-2014]]></date>
</event>
<event>
<title>Services PMI</title>
<country>GBP</country>
<date><![CDATA[05-06-2014]]></date>
</event>
</weeklyevents>
答案 0 :(得分:2)
您可以更改
<xsl:value-of select="country"/>
通过
<xsl:choose>
<xsl:when test="country = 'USA'">
<img src="../usa.jpg" />
</xsl:when>
<xsl:when test="country = 'UK'">
<img src="../uk.jpg" />
</xsl:when>
<xsl:otherwise>
...
</xsl:otherwise>
</xsl:choose>
答案 1 :(得分:1)
如果您希望处理包含图片代码的模板,则应将<xsl:value-of select="country"/>
替换为xsl:apply-templates select="country">
。有了它,您将调用为每个国家/地区定义的模板。
<xsl:template match="/">
<table class="headingstable">
...
<xsl:for-each select="weeklyevents/event">
<tr>
<td class="headingsmid"><xsl:value-of select="title"/></td>
<td class="headingsmid"><xsl:apply-templates select="country"/></td>
<td class="headingsmid"><xsl:value-of select="date"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
因此,如果您按照建议的那样为每个国家/地区设置了模板,那么如果源文档中有<country>UK</country>
,则该模板将与您的country
模板匹配:
<xsl:template match="country[. = 'UK']">
<img src="../uk.jpg" />
</xsl:template>
,生成的<td>
将为:
<td class="headingsmid">
<img src="../uk.jpg"/>
</td>
如果来源包含“不受支持”的国家/地区(您没有模板),则只会打印出文字:
<td class="headingsmid">AUS</td>
如果您可以从国家/地区代码中获取文件名,那么您可以使样式表更加简单。
如果您使用 XSLT 2.0 ,请替换所有country
模板:
<xsl:template match="country">
<img src="../{lower-case(.)}.jpg" />
</xsl:template>
如果您仅限于 XSLT 1.0 (例如,如果在浏览器中完成处理),则您不会lower-case()
但可以使用此translate()
:
<xsl:template match="country">
<img src="../{translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')}.jpg" />
</xsl:template>