使用XML片段在xsl:variable上失败的XPath

时间:2015-03-23 13:21:34

标签: xpath xslt-2.0

我必须遗漏一些非常基本的东西。我想从存储在xsl:variable中的XML片段中查找转换后的XML文档中的密钥。这是一个最小的例子:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<code>A</code>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:variable name="mappings">
        <mapping key="A">Amy</mapping>
    </xsl:variable>

    <xsl:template match="code">
        <xsl:value-of select="$mappings/mapping[@key = text()]"/> 
    </xsl:template>
</xsl:stylesheet>

使用XSL样式表转换此XML文档会产生空结果。似乎比较@key = text()是错误的,因为当我使用<xsl:value-of select="$mappings/mapping[@key = 'A']"/>时,它会检索预期值(即“Amy”)。我错过了什么?

2 个答案:

答案 0 :(得分:3)

使用

<xsl:template match="code">
    <xsl:value-of select="$mappings/mapping[@key = current()]"/> 
</xsl:template>

答案 1 :(得分:0)

使用中间变量,它可以正常工作:

<xsl:template match="code">
    <xsl:variable name="keyval" select="./text()" />
    <out>
       <xsl:value-of select="$mappings/mapping[@key = $keyval]"/>
    </out>
</xsl:template>