我正在使用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>
答案 0 :(得分:2)
我认为您需要做的就是这个……
<xsl:variable name="parent" select="../OtherDetails"/>
这假设您位于Other
节点上,并希望将OtherDetails
置于同一父节点下。
请注意,您也可以执行此操作,但是只有在OtherDetails
始终跟随Other
<xsl:variable name="parent" select="following-sibling::OtherDetails"/>
还请注意变量在作用域内是局部的。在特定示例中,您将无法在$parent
之外使用xsl:if
。