XSLT显示所有XML标签内容

4

我是XSLT的新手。我想在我的XSL格式页面中显示XML标签中的所有信息。我尝试使用local-name、name等方法都无法给我想要的结果。

例如:

 <step bar="a" bee="localhost" Id="1" Rt="00:00:03" Name="hello">Pass</step>

我希望能够打印出所有信息(例如bar="a"bee="localhost")以及<step>元素的值为“Pass”。

我该如何使用xsl实现呢?

谢谢!


你只需要属性的值,还是属性名和值一起? (bar="a" vs a) - Daniel Haley
2个回答

3
如果您只想返回值,可以使用XPath //text()|@*
如果您想得到属性/元素名称以及其对应的值,可以使用以下样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="*">
    <xsl:apply-templates select="node()|@*"/>
  </xsl:template>

  <xsl:template match="text()">
    <xsl:value-of select="concat('&lt;',name(parent::*),'> ',.,'&#xA;')"/>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:value-of select="concat(name(),'=&#x22;',.,'&#x22;&#xA;')"/>
  </xsl:template>

</xsl:stylesheet>

有了您的输入,它将产生这个输出:

bar="a"
bee="localhost"
Id="1"
Rt="00:00:03"
Name="hello"
<step> Pass

2
<xsl:for-each select="attribute::*">   
  <xsl:value-of select="text()" />   
  <xsl:value-of select="local-name()" />   
</xsl:for-each>
<xsl:value-of select="text()" />   
<xsl:value-of select="local-name()" />   

XSL是这样的 - 但如果我更改命名空间前缀,它也可以是另外一种形式 :) - MikeyKennethR
我知道这一点,但是楼主说他们对XSLT很新,所以我只是指出了笔误。如果他们尝试使用你的答案,可能会让他们感到困惑。此外,value-of元素没有关闭;这也可能会引起混淆。有点惊讶这个答案在这种情况下得到了赞成。 :-) - Daniel Haley
该死,没看到 - 你知道当代码被着色时,有时会错过纪律...哎呀。 - MikeyKennethR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接