获取xslt中所有父项的属性

时间:2015-10-13 09:03:14

标签: java xml xslt

我有以下xml结构

<xsl:value-of select="@name" />  

如果我尝试以下语法,

<comp> @name = a, at<subcomp2> it is a2
当我在特定标签时,

给出name的属性值。即我在

<subcomp2> I want value a->a1->a2
<subcomp1> a->a1
<subcomp3> a->a3

<xsl:value-of select="..\@name" /> 

但我希望得到包括父母在内的所有属性值。即我在

 Camera.Parameters p;
 p = camera.getParameters();
 p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
 camera.setParameters(p);

上面只有一位家长。所以请让我知道相同的解决方案

1 个答案:

答案 0 :(得分:2)

您想要的表达式是ancestor-or-self::*/@name

如果您使用的是XSLT 2.0,那么xsl:value-of会返回所有匹配的属性,因此您可以这样做以列出它们,例如

<xsl:value-of select="ancestor-or-self::*/@name" separator="-" />

但是,在XSLT 1.0中,xsl:value-of只返回第一个的值。因此,您可以使用xsl:for-each代替

<xsl:for-each select="ancestor-or-self::*/@name">
    <xsl:if test="position() > 1">-</xsl:if>
    <xsl:value-of select="." />
</xsl:for-each>

或许这......

<xsl:for-each select="ancestor-or-self::*">
    <xsl:if test="position() > 1">-</xsl:if>
    <xsl:value-of select="@name" />
</xsl:for-each>