你能用<xsl:for-each>来浏览属性吗?

use*_*869 4 xslt foreach xslt-2.0

是否可以在属性上使用命令?我希望能够在不知道属性名称的情况下运行.这是一个快速(可怕)的例子:

<candy hard="true" soft="false" stripes="true" solid="false">
Run Code Online (Sandbox Code Playgroud)

在我的脑海里(这不起作用)它应该看起来像这样:

<xsl:for-each select="candy/@[@='true']">
Run Code Online (Sandbox Code Playgroud)

有没有办法在不知道名字的情况下运行属性,或者我是否需要编写正在查看的每个属性?

编辑

下面是我尝试从属性名称中创建变量的示例,其中value ='true'

<xsl:for-each select="candy/@*[. = 'true']">
<xsl:attribute name="candytype"> 
   <xsl:value-of select="name()"/> 
</xsl:attribute>
<xsl:text> </xsl:text>
<xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

Dim*_*hev 7

OP的评论:

我可以返回其值='true'的每个属性名称(而非值)吗?

<xsl:for-each select="candy/@*[. = 'true']">
   <xsl:value-of select="name()"/>
   <xsl:text> </xsl:text>
<xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

在XSLT 2.0中,只需评估此XPath(2.0)表达式:

candy/@*[. = 'true']/concat(name(.), ' ')
Run Code Online (Sandbox Code Playgroud)