我可以将一个变量插入Xsl中的其他变量吗?

时间:2010-07-16 15:15:28

标签: xslt

<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"/>

1 个答案:

答案 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"/>