2014-11-14 2 views
0

Возможно ли получить доступ к текстовому узлу набора узлов с помощью ключевой функции в xslt 1.0? я следующий код:xslt получить текст с набором узлов с ключевой функцией

<xsl:variable name="Items"> 
     <Item ID="ID1">name1</Item> 
     <Item ID="ID2">name2</Item> 
</xsl:variable> 

<xsl:key name="get_item_by_ID" match="exsl:node-set($Items)/Item" use="@ID"/> 

<xsl:template match="/Items"> 
    <xsl:value-of select="key('get_item_by_ID', @ItemID)/text()"></xsl:value-of> 
</xsl:template> 

Я хочу, чтобы искать текст узла устанавливается ItemID текущего пункта для того, чтобы переименовать деталь, это предопределенный текст набор узлов (ID1: name1 , ID2: name2).

ответ

0

У вас есть вопрос контекста здесь:

Узел-набор, созданный exsl:node-set($Items) является отдельным «документом». Вы не можете указать документ в соответствии с атрибутом match элемента <key>.

Перед вызовом функции key() вы должны переключить контекст на нужный документ (в XSLT 2.0 вы можете указать документ в соответствии с самой функцией key()).

+0

Спасибо, что не знал об этом. Что вы умеете с помощью «switch de context do the required document»? Как я могу это понять? –

+0

Вы можете переключать контекст с помощью 'xsl: for-each', например' '. См. Пример этого в предыдущем вопросе: http://stackoverflow.com/questions/26889758/xslt-node-set-use-in-key-function-find-children-by-parent-attribute –

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