<xsl:variable name="id">
<idNum>0607V45621014F</idNum>
</xsl:variable>
<xsl:variable name="pathId" select="Orders/Order[ORD_Num='$id/idNum']"/>
....不要选择idNum
另一个......不是..
<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"/>
答案 0 :(得分: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]"/>
因为$ 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"/>