2013-06-20 5 views
0

У меня есть хранимая процедура, которая возвращает имена элементов в виде xml. Я использую это в коде xslt для возврата имен. И хочу получить имена переменной xslt. Я попробовал мой код, какНе удалось получить значение переменной xslt

<xsl:variable name="Item" 
    select="shop:ExecStoredProcedure(
      'kt_Item', 
      concat('@Dcat:',$p//defaultcategory) 
     )" /> 
<xsl:variable name="txt1" 
       select="$Item//TT[@TXT1]"/> 
    <textarea> 
    <xsl:value-of select="$txt1"/> 
    </textarea> 

вывод XML, как

<root> 
<item> 
<Column1> 
<TT TXT1="Item3" /> 
<TT TXT1="Item2" /> 
<TT TXT1="Item1" /> 
</Column1> 
</item> 
</root> 

но в моем коде я не могу получить names.Waht будет знать, в чем проблема? кто-нибудь?

+0

Это не ясно, что вы пытаетесь сделать; вы ссылаетесь пару раз на «имена», но ничего в XML, который вы копируете на выходе, называется «имя». Вы имеете в виду, что вместо того, чтобы писать элементы TT на выходе, вы хотите записать значения атрибута TXT1 для вывода? –

ответ

1

Проблема заключается в том, что возвращаемое значение ExecStoredProcedure является строкой из точки зрения xslt (даже если sting содержит XML).

XSLt-1.0 не может интерпретировать строку как XML. В зависимости от вашей среды (процессор xlst) вы можете использовать расширение node-set().

Если вы можете использовать это расширение, вы можете попробовать что-то вроде:

<xsl:variable name="txt1" select="exsl:node-set($Item)//TT[@TXT1]"> 
+0

Я попытался Но результат, который я получаю, - Arun

+0

Хм кажется, я не понимаю, каков ваш ожидаемый результат is, но xpath, похоже, работает, потому что 'TT [@ TXT1]' ищет все TT с атрибутом @TXT. –

+0

Мне нужен выход, как ... Item1 Item2 Item3 .. Каждое значение Отдельно .. – Arun

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