如果使用另一个变量的变量,XSLT不显示节点名称

时间:2017-12-18 12:00:03

标签: xml xslt

我的XSLT如下所示:

<xsl:param name="file1" select="document('Category.xml')"/>
<xsl:template match="/">

     <xsl:variable name="JobCategory" select="normalize-space(user:replaceCategoryChar(JobCategoryId))" />
     <xsl:variable name="JobOccupation" select="normalize-space(user:replaceCategoryChar(JobOccupationId))" />


     <xsl:variable name="y"><xsl:value-of select="$file1//feeds/MedicalHealth/Nursing/JobCategoryId" /></xsl:variable> 

     <xsl:variable name="z"><xsl:value-of select="concat('$file1//feeds/',$JobCategory, '/' ,$JobOccupation,'/JobCategoryId')"/></xsl:variable>

</xsl:template>

示例XML

<MedicalHealth>
        <Nursing>
            <JobCategoryId>XX</JobCategoryId>
        </Nursing>
</MedicalHealth>

问题和问题: - JobCategory从不同的查询中获取文本即将到来。 (即MedicalHealth) - JobOccupation从不同的查询中获取文本即将到来。 (即护理)

当我打印变量&#34; y&#34;它正确地从XML中选择值。即:: XX 但是,当我尝试打印变量&#34; z&#34;是按原样打印xPath。即:$ file1 // feeds / MedicalHealth / Nursing / JobCategoryId

我试着把下面的东西放进去

在$ JobCategory处出现$ $错误:意外令牌&#39; $&#39;在表达中。

有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

据我所知,你不能用XSLT做到这一点。例如:

  

我想获取名称等于的变量的值   在当前节点中找到的“id”属性的值。你不能。   在XSLT中没有办法构造XPath表达式(例如   变量引用)在运行时。

您的示例与上述声明类似。请参阅参考资料:http://www.dpawson.co.uk/xsl/sect2/nono.html#d1874e40