【发布时间】:2015-09-07 13:08:18
【问题描述】:
我是 XSLT 的新手,花了相当多的时间来掌握创建一个内联查找映射以用另一个值替换 XSLT 2.0 中映射列表的特定值,结果发现我只能使用1.0。 :-(
我的问题是如何在 1.0 中复制以下工作 XSLT 2.0 代码。我尝试了一些方法,但似乎无法正常工作。
请注意,如果没有地图,则该元素应为空。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="mapxml" >
<map>
<Country>
<input value="GB">RZ</input>
<input value="FR">TH</input>
</Country>
</map>
</xsl:variable>
<xsl:variable name="vMap"
select="$mapxml" />
<xsl:key name="kInputByVal" match="input"
use="@value" />
<xsl:template match="Country/text()">
<xsl:sequence select=
"(key('kInputByVal', ., $vMap/*/Country)[1]/text()
)[1]
"/>
</xsl:template>
</xsl:stylesheet>
输入 XML:
<user>
<Country>GB</Country>
<Name>FOO</Name>
<Address>BAR</Address>
<user>
【问题讨论】:
标签: xml xslt xslt-1.0 xslt-2.0