2010-07-16 2 views
0
<xsl:variable name="id"> 
    <idNum>0607V45621014F</idNum> 
</xsl:variable> 

<xsl:variable name="pathId" select="Orders/Order[ORD_Num='$id/idNum']"/> 

.... не выбрать idNumМожно ли вставить одну переменную в другую переменную в Xsl?

other..not ..

<xsl:variable name="XmlFile" select="YG.xml"/> 
<xsl:value-of select="document($XmlFile)/aziende/azienda/ragione_sociale"/> 

или другой ... нет ..

<xsl:variable name="tagName" select="aziende"/> 
<xsl:value-of select="document($XmlFile)/$tagName/azienda/ragione_sociale"/> 
+3

Пожалуйста, переформатировать вопрос. Написание таких материалов, как «помогите мне!», «Спасибо» и т. Д., Отталкивает людей отвечать. Используйте полные предложения. Опишите желаемый ввод и вывод, например «Я получил переменную x =« ab », y = 'c', я хочу z = 'abc'". В двух последних примерах я не вижу значимой разницы. – phihag

ответ

3

1)

<xsl:variable name="pathId" select="Orders/Order[ORD_Num='$id/idNum']"/> 

Вы говорите: Order элемент, у которого есть как минимум один ORD_Num ребенок со строковым значением, равным '$id/idNum'.

Заменить:

<xsl:variable name="pathId" select="Orders/Order[ORD_Num=$id]"/> 

Поскольку строковое значение переменной $ ид (Конечное дерево фрагмент, как вы определяете) является 0607V45621014F.

Примечание: Было бы лучше, если бы вы определяли $ id как строку, такую ​​как select="'0607V45621014F'". Кроме того, вы не можете (в XSLT 1.0): [ORD_Num=$id/idNum], потому что оператор / не может применяться к RTF.

2)

<xsl:variable name="XmlFile" select="YG.xml"/> 
<xsl:value-of select="document($XmlFile)/aziende/azienda/ragione_sociale"/> 

Здесь вы говорите: Пусть $ XMLFILE узел установлен со всеми YG.xml элементов Чайлдс из контекстного узла и т.д.

Заменить (если вы хотите документ с относительной URI YG.xml)

<xsl:variable name="XmlFile" select="'YG.xml'"/> 

Примечание: это не trought ошибку, потому что document() очень универсален (это те немногие из них, что т ака в качестве object пар)

3)

<xsl:variable name="tagName" select="aziende"/>        
<xsl:value-of select="document($XmlFile)/$tagName/azienda/ragione_sociale"/> 

Это не работает, потому что правая expresion из / должна быть путь (В XSLT 2.0 может быть функция, а).

Заменить:

<xsl:variable name="tagName" select="document($XmlFile)/aziende"/>        
<xsl:value-of select="$tagName/azienda/ragione_sociale"/> 

Или

<xsl:variable name="tagName" select="'aziende'"/>        
<xsl:value-of select="document($XmlFile)/*[name()=$tagName]/azienda/ragione_sociale"/>