2013-09-18 6 views
2

У меня есть следующий вопрос, в основном я просто хотел бы создать настраиваемый массив, что-то вроде - Желтый | Красный | ЗеленыйXslt массив и/или цикл

И после того, как цикл по этим пунктам, используя для-всех и печати значений, я создал что-то вроде этого:

 <xsl:variable name="Colors"> 
      <m>Yellow</m> 
      <m>Red</m> 
      <m>Green</m> 
     </xsl:variable> 

И тогда я пытаюсь петлю на нем:

 <xsl:for-each select="$Colors"> 

      <xsl:value-of select ="current()" />     
     </xsl:for-each> 

Но Я получаю эту ошибку: Exrpession должен evalutate к набору узлов $ Цвета

Любая идея, что может быть неправильным?

ответ

4

С XSLT 1.0 ваша переменная содержит фрагмент дерева результатов (RTF), и вы ничего не можете с ней сделать, но используйте xsl:copy-of или xsl:value-of. К счастью, большинство процессоров XSLT 1.0 поддерживают exsl:node-set или аналогично преобразовать фрагмент результирующего дерева в узел, чтобы вы могли использовать <xsl:for-each select="exsl:node-set($Colors)/m">...</xsl:for-each>, где вам нужно объявить xmlns:exsl="http://exslt.org/common" в вашей таблице стилей.

+1

Если вы используете ' 'тогда три значения должны быть выведены. Если это не сработает, в вашей таблице стилей может появиться объявление пространства имен по умолчанию. Вам нужно будет изменить объявление переменной на ' Желтый ...', чтобы убедиться, что элементы 'm' не имеют пространства имен и может быть выбрано как 'm' в XPath. –

+0

просто еще один вопрос, касающийся этого, для уточнения: необходимо использовать для построения массива, или я могу создать массив по-разному? – Alnedru

+1

Вы не строите 'массив', поскольку у XSLT/XPath нет такого типа данных. В XSLT 1.0 вы создаете фрагмент дерева результатов, который затем конвертируется в набор узлов. Чтобы структурировать фрагмент дерева результатов, вам действительно нужно использовать элементы (или, в общем, узлы). С XSLT 2.0 существует больше гибкости, так как там вы можете определить последовательность строк с помощью '. –

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