2012-03-05 2 views
3

Humm ...Как Eval в XSL построен выражение XPath

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

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

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

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

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

Спасибо большое заранее, Christophe

+2

Обычный способ ответить на свой вопрос состоит в том, чтобы добавить «ответ», содержащий ваш ответ, а затем принять его (нажмите галочку). В качестве альтернативы, поскольку вы в основном использовали ответ @ Martin, вы можете просто согласиться с этим. – LarsH

+0

@LarsH, я не думаю, что этот пользователь когда-либо отреагирует .. Я встретил многих таких пользователей, которые создают учетную запись, задают вопрос, забывают об этом после получения ответа .. они никогда не вернутся :), так что будет только 1 Q в истории деятельности. –

ответ

2

С полным выражением XPath вы понадобился бы оценить функцию который находится в XSLT 1.0 и 2.0, доступный только как расширение, см. http://www.saxonica.com/documentation/extensions/functions/evaluate.xml (что также предлагает XSLT 3.0 получить команду xsl:evaluate).

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

+0

Большое спасибо, вот что я пробовал. К сожалению, я ограничен Saxon-HE, поэтому xsl: оценка не для меня. –

Смежные вопросы