2011-09-22 191 views
4

我是使用XSLT的新手。我想在xsl格式頁面的xml標籤中顯示所有信息。我曾嘗試使用本地名稱,名稱等,沒有給我我想要的結果。XSLT顯示所有XML標記內容

實施例:

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

我想能夠打印出所有的信息(bar="a"bee="localhost")等以及<step>通行證的值。

我該怎麼用xsl做這個?

謝謝!

+0

你只是想屬性的值或名稱? ('bar =「a」'vs'a') –

回答

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()" /> 
+0

'sxl:'前綴? –

+0

xsl即 - 但它可能是 - 如果我更改了命名空間前綴:) – Mike

+0

我知道,但OP說他們是XSLT的新手,我只是指出了這個錯字。如果他們試圖使用你的答案,它可能會混淆OP。另外,'value-of'元素沒有關閉;這可能會導致混淆。有點驚訝,這個答案在這種情況下得到了滿意的結果。 :-) –

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