Xslt 您能使用<;xsl:for each>;检查属性?
是否可以对属性使用命令?我希望它能够在不知道属性名称的情况下运行。下面是一个快速(糟糕)的例子:Xslt 您能使用<;xsl:for each>;检查属性?,xslt,foreach,xslt-2.0,Xslt,Foreach,Xslt 2.0,是否可以对属性使用命令?我希望它能够在不知道属性名称的情况下运行。下面是一个快速(糟糕)的例子: 在我的脑海中(这不起作用)应该是这样的: <xsl:for-each select="candy/@[@='true']"> 有没有一种方法可以在不知道属性名称的情况下运行属性,或者我需要编写每个正在查看的属性 编辑 下面是一个我试图从属性名创建变量的示例,其中value='true' <xsl:for-each select="candy/@*[. = 'true']"
在我的脑海中(这不起作用)应该是这样的:
<xsl:for-each select="candy/@[@='true']">
有没有一种方法可以在不知道属性名称的情况下运行属性,或者我需要编写每个正在查看的属性
编辑
下面是一个我试图从属性名创建变量的示例,其中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>
您想要的是
<xsl:for-each select="candy/@*">
OP的评论:
我是否可以返回其值为true的每个属性名(不是值)
酷。。我是否可以返回其值为true的每个属性名(不是值)?如下所示:?@user673869:要选择值为true的属性节点,请选择
select=“candy/@*[.='true']”
。选择或返回他们的姓名是一个较长的答案。。。请参阅Dimitre的答案。Dimitre-是否可以用属性名创建变量而不是显示它?我尝试过这样做,但没有效果…@user673869:是的,这个变量包含一系列字符串,每个字符串都是一个属性的名称:
Dimitre-我相信您的代码是为XSLT 2.0编写的。你能为1.0写一个例子吗?另外,你给了我这个网站,作为我之前一个问题的一个很好的参考工具:。有没有其他更好的方法来解释我想要实现的目标?谢谢@user673869:您将问题标记为“xslt-2.0”。如果这是错误的,请删除此标记并将其标记为“xslt-1.0”@user673869:在xslt 1.0中,只需将xsl:for each
放在xsl:variable
的主体内。
<xsl:for-each select="candy/@*">
<xsl:for-each select="candy/@*[. = 'true']">
<xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
<xsl:for-each>
candy/@*[. = 'true']/concat(name(.), ' ')