我有以下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);
上面只有一位家长。所以请让我知道相同的解决方案
答案 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>