使用 XSLT 从 XML 检索所有属性值

Eri*_*and 4 xml xslt value-of

我不知道如何从 XML 文档访问标签中的所有属性。

假设我有以下 XML:

<names>
  <name firstname="Rocky" lastname="Balboa" divider=", "/>
  <name firstname="Ivan" lastname="Drago" divider=", "/>
</names>
Run Code Online (Sandbox Code Playgroud)

我想要以下输出: Rocky Balboa, Ivan Drago,

我目前拥有的是:

<xsl:for-each select="names/name">
   <xsl:value-of select="@firstname"/>
   <xsl:value-of select="@lastname"/>
   <xsl:value-of select="@divider"/>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

我想知道的是,是否可以只在一个值中执行此操作,而不必执行其中三个。所以澄清一下,我希望能够用一个单一的选择值输出标签中的所有属性。这可能吗?

谢谢。

jam*_*ock 5

尝试以下操作:

<xsl:template match="/">
 <xsl:for-each select="names/name/@*">
        <xsl:value-of select="concat( ., ' ')"/>
  </xsl:for-each>
</xsl:template>     
Run Code Online (Sandbox Code Playgroud)


use*_*611 1

您可以使用此 XPath @* 来获取所有属性,例如:

<xsl:template match="/*">
    <xsl:for-each select="@*">
        <xsl:value-of select="concat(name(), ': ', ., ' ')"/>
    </xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

这将允许您仅使用一个 select 值来获得您想要的输出。它将考虑所有属性。

这应该足以让您弄清楚事情。如果您还有其他问题,请告诉我。