Получение значений массива XSLT

#arrays #xml #xslt

#массивы #xml #xslt

Вопрос:

пожалуйста, помогите,

У меня есть эти значения:

 <xsl:variable name="PB" select="'/join/id/stop/regelingtype_007'"/>
<xsl:variable name="I" select="'/join/id/stop/regelingtype_008'"/> 
<xsl:variable name="VR" select="'/join/id/stop/regelingtype_009'"/>
<xsl:variable name="P" select="'/join/id/stop/regelingtype_010'"/> 
  

У меня есть этот массив

 <xsl:variable name="OP-implementatie" select="[
        $PB,
        $I,
        $VR,
        $P
        ]"/>
  

Теперь я хочу проанализировать этот xslt с помощью другого xslt
Я получаю ссылку на массив следующим образом

 <xsl:variable name="vars" select="document('xxx')s/*/xsl:variable" />
  

Я нахожу массив следующим образом

 <xsl:variable name="array" select="$vars[@name = 'OP-implementatie']/@select"/>
  

Пока здесь все работает нормально, я могу ссылаться на правильный массив, но теперь я хочу использовать значения:

 <xsl:element name="var"><xsl:value-of select="$array"/></xsl:element>
  

Он просто печатает массив следующим образом

 <var>[         $PB,         $I,         $VR,         $P         ]</var>
  

И когда я делаю это:

 <xsl:element name="var"><xsl:value-of select="$array[1]"/></xsl:element>
  

Он делает то же самое.
Я надеялся получить значения массива одно за другим, как я могу это сделать?

Большое спасибо за любую помощь

С наилучшими пожеланиями, Берт Верхис

Комментарии:

1. Какой результат вы пытаетесь получить? И какую версию XSLT вы можете использовать?

Ответ №1:

Я бы предложил импортировать документ с помощью, например <xsl:import href="sheet1.xsl"/> , , затем вы можете выбрать $OP-implementatie как полный массив и использовать, например $OP-implementatie?1 , или $OP-implementatie(1) для получения первого элемента в массиве. Непонятно, почему вам нужно использовать другой XSLT как обычный XML, анализируемый с doc помощью или document .

Комментарии:

1. Это многообещающее решение, спасибо. Недостатком является то, что импорт является проблемой из-за конфликтующего корневого элемента. Или можно импортировать узлы из другого документа? Зачем мне это нужно — долгая история, это связано с анализом документов xslt.

2. @BertVerhees, любой импортируемый обычно должен иметь более низкий приоритет, чем ваш импортирующий код, поэтому конфликты не должны возникать.

3. Я попробую завтра и дам вам знать. Еще раз спасибо

4. Извините, это не работает, внутренние ссылки импортированной таблицы стилей начинают возражать, потому что в ситуации импорта их XPath изменился.

5. Для других, кто ищет ответ на аналогичную проблему, я решил так: <xsl:имя переменной =»AMvB_MR_BRG» выберите=»/regelingtype_001 / regelingtype_002″/> Строки без кавычек для каждого элемента и косой черты пересылки, и это сработало.