Как оценить построенное XSL выражение XPath

Хм...

<xsl:value-of select="$document/@*[name() eq $attrName]"/>

кажется решением... С уважением, Кристоф

У меня есть переменная, содержащая имя атрибута для запроса. Как я могу написать такое выражение XPath? Вот пример того, что я хотел бы сделать

<xsl:variable name="attrName" select="$config//conf:document[@id=$docId]/@archive-ventil-attr"/>
<xsl:value-of select="$document/@{$attrName}"/>

Я использую XSLT 2.0

Заранее большое спасибо, Кристоф.


person Christophe Marchand    schedule 05.03.2012    source источник
comment
Обычный способ ответить на свой вопрос — добавить ответ, содержащий ваш ответ, а затем принять его (щелкнуть галочкой). В качестве альтернативы, поскольку вы в основном использовали ответ @Martin, вы могли бы просто принять его.   -  person LarsH    schedule 06.03.2012
comment
@LarsH, я не думаю, что этот пользователь когда-либо ответит .. Я встречал много таких пользователей, которые создают учетную запись, задают вопрос, забывают его после получения ответа .. они никогда не вернутся :), так что будет только 1 Q в истории активности.   -  person InfantPro'Aravind'    schedule 06.03.2012


Ответы (1)


С полным XPath-выражением вам понадобится функция оценки, которая в XSLT 1.0 и 2.0 доступна только как расширение, см. saxon:evaluate. Кроме того, в XSLT 3.0 (https://www.w3.org/TR/xslt-30/#element-evaluate) (начиная с Saxon 9.8 и более поздних версий PE и EE, Altova XML 2017 R3 и более поздних версий) существует элемент инструкции с именем xsl:evaluate.

Пока у вас есть просто строка с локальным именем, достаточно использовать <xsl:value-of select="$elements/@*[local-name() = $attrName]"/>. Это предполагает, что $elements является набором узлов (XPath 1.0) или последовательностью (XPath 2.0) узлов-элементов.

person Martin Honnen    schedule 05.03.2012
comment
Большое спасибо, это то, что я пробовал. К сожалению, я ограничен Saxon-HE, поэтому xsl:evaluate для меня не решение. - person Christophe Marchand; 05.03.2012