При преобразовании документа мне нужно «найти» определенное содержимое узла в «карте» и записать эти значения.
Я добавил свою «карту» в преобразование.
<xsl:variable name="inlinedmap">
<kat id="stuff">value</kat>
<!-- ... -->
</xsl:variable>
<xsl:variable name="map" select="document('')/xsl:stylesheet/xsl:variable[@name='inlinedmap']" />
<xsl:template match="/">
<xsl:for-each select="/*/foo">
<!-- 'bar' contents should equal to contents of 'kat' -->
<xsl:variable name="g" select="$map/key[.=bar]"/>
<xsl:choose>
<xsl:when test="$g != ''">
<xsl:value-of select="$g/@id"/>
</xsl:when>
<xsl:otherwise>
ERROR
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Я всегда получаю значение ОШИБКИ.Я не могу поместить значения карт в атрибуты, потому что они содержат экранированные буквы.
Как я могу заставить это работать?