Не могу найти причину, по которой не работает следующее.
Если у меня есть документ, который выглядит как
<mydocroot>
<request>
<key>Ham</key>
</request>
<node>
<data alias='Ham' id='27'>Some value</data>
<data alias='Eggs' id='14'>Greenish</data>
<data alias='Condiment' id='32'>Salt and pepper</data>
...
</node>
</mydocroot>
и шаблон xsl, который выглядит как
<xsl:template match="/">
<xsl:value-of select="/mydocroot/node/data[@alias=string(/mydocroot/request/key)]" />
</xsl:template>
ничего не печатает.
<xsl:template match="/">
<xsl:value-of select="/mydocroot/node/data[@alias='Ham']" />
</xsl:template>
печатает «Некоторое значение», как и ожидалось.
Что я делаю не так?
Спасибо!
Edit:
На самом деле я не на 100% уверен, как выглядит базовый документ, с которым я работаю, но я знаю, что если продолжить этот пример,
<xsl:value-of select="/mydocroot/request/key" /> <!-- prints "Ham" -->
работает.
Можно ли сопоставить значение атрибута со значением узла?