下面是一个很好的例子,但我怎样才能动态存储值....你能解释一下吗?
<xsl:variable name="countries" select="'EG, KSA, UAE, AG'" />
<xsl:variable name="country" select="'KSA'" />
<xsl:choose>
<xsl:when test="
contains(
concat(', ', normalize-space($countries), ', ')
concat(', ', $country, ', ')
)
">
<xsl:text>IN</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>OUT</xsl:text>
</xsl:otherwise>
看起来很好....我有另一个要求。你能看看这个吗?
<xml>
<test>
<BookID>
0061AB
</BookID>
<amount>
16
</amount>
</test>
<test>
<BookID>
0062CD
</BookID>
<amount>
2
</amount>
</test>
<test>
<BookID>
0061AB
</BookID>
<amount>
2
</amount>
</test>
</xml>
这里根据BookID的等值,我想添加金额值.....如上例所示,如果BookID的值是0061AB,那么金额的值应该是18。
答案 0 :(得分:0)
正如其他人所提到的,您的问题不是很明确,但您可以使用调用模板在包含候选国家/地区和搜索列表的xml文档中重复使用“国家/地区查找”算法(您也可以使用{ {1}}加载将候选和搜索目标拆分为单独的xml文档)
e.g。在应用XSLT时:
document
到XML
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/xml">
<xsl:apply-templates select="test"/>
</xsl:template>
<xsl:template match="test">
<xsl:call-template name="FindCountry">
<xsl:with-param name="countries" select="normalize-space(countries/text())"/>
<xsl:with-param name="country" select="normalize-space(country/text())"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="FindCountry" xml:space="default">
<xsl:param name="countries" />
<xsl:param name="country" />
Is <xsl:value-of select="$country" /> in <xsl:value-of select="$countries" /> ?
<xsl:choose>
<xsl:when test="contains(concat(', ', $countries, ', '),
concat(', ', $country, ', '))">
<xsl:text>IN</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>OUT</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<强>结果强>
<xml>
<test>
<countries>
EG, KSA, UAE, AG
</countries>
<country>
UAE
</country>
</test>
<test>
<countries>
GBR, USA, DE, JP
</countries>
<country>
AUS
</country>
</test>
</xml>