2014-06-19 7 views
0

У меня есть внутренне определенная таблица сопоставления в документе xsl, и я хочу получить доступ к значению с помощью xpath из xml в качестве ключа. В XSL2 мне показалось, что это легко, но я, кажется, получаю ошибки.Правильный синтаксис для внутреннего поиска XSL-карт

<xsl:variable name="map"> 
<entry key="One">testOne</entry> 
<entry key="Two">testTwo</entry> 
<entry key="Three">testThree</entry> 
</xsl:variable> 

<xsl:variable name="testVariable"> 
<value-of select="$map/entry[@key=A/B]"/> 
</xsl:variable> 

Если XML-документ выглядит как:

<A> 
<B>Three</B> 
<A> 

testVariable в XSL документа следует принять решение

ответ

1

У вас есть две проблемы 'testThree' здесь. Во-первых, она должна быть XSL: стоимость из и не только стоимость из

Во-вторых, где вы используете A/B в вашем состоянии XPATH, это будет по отношению к элементу запись вы ищете на, не A/B в вашем оригинальном XML.

Попробуйте вместо этого:

<xsl:variable name="key" select="A/B"/> 
<xsl:variable name="testVariable"> 
    <xsl:value-of select="$map/entry[@key=$key]"/> 
</xsl:variable> 

Или еще лучше, писать эту

<xsl:variable name="key" select="A/B"/> 
<xsl:variable name="testVariable" select="$map/entry[@key=$key]"/> 

В самом деле, вы не должны использовать переменную в ключ на всех, просто используйте current() функция для получения текущего контекста в XML-документе

<xsl:variable name="testVariable" select="$map/entry[@key=current()/A/B]"/>