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]"/>
Поскольку строковое значение переменной $ 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'"/>
Примечание: это не вызывает ошибки, потому что document()
очень универсален (это те немногие, которые принимают object
в качестве параметра)
3)
<xsl:variable name="tagName" select="aziende"/>
<xsl:value-of select="document($XmlFile)/$tagName/azienda/ragione_sociale"/>
Это делаетне работает, потому что правильное выражение /
должно быть путем (В 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"/>