如何从XSLT变量中获取评估值

时间:2018-09-10 08:08:31

标签: xml xslt

我正在使用XSLT进行XML转换。我遇到的情况是,我在所有父元素中都有许多父元素和一个同名“ OtherDetails”的子元素。因此,我迭代父元素以获得子元素“ OtherDetails”的值。所以,我尝试这种方式。

<xsl:if test".='Z'">
<xsl:variable name="parent" select="concat(name(..),'/OtherDetails')"/>
<xsl:value-of select="$parent" />
</xsl:if>

当我尝试a时,我得到了$ parent变量的串联字符串,但是我需要获得$ parent变量的XPath值。

当元素“ Other”的值为“ Z”时,我需要获取OtherDetails的值 示例XML:

<structure>
<Other/>
<OtherDetails>Value1</OtherDetails>
</structure>
<power>
<Other>Z</Other>
<OtherDetails>Value2</OtherDetails>
</power>
<restrict>
<Other>Z</Other>
<OtherDetails>Value3</OtherDetails>
</restrict>

1 个答案:

答案 0 :(得分:2)

我认为您需要做的就是这个……

<xsl:variable name="parent" select="../OtherDetails"/>

这假设您位于Other节点上,并希望将OtherDetails置于同一父节点下。

请注意,您也可以执行此操作,但是只有在OtherDetails始终跟随Other

的情况下,此方法才有效
<xsl:variable name="parent" select="following-sibling::OtherDetails"/>

还请注意变量在作用域内是局部的。在特定示例中,您将无法在$parent之外使用xsl:if