2012-03-08 149 views
1

我正在使用XSLT將一段XML轉換爲Pipe | Seperated | Value格式。XML到PSV特定節點

但是我只希望選擇某些節點轉換成這種格式。

我該怎麼辦?

的XML駐留其可被聲明爲 「×」

示例XML結構的命名空間內:

<Message> 
    <Top> 
     <a></a> 
     <b></b> 
    </Top> 
    <Middle> 
     <c></c> 
    </Middle> 
    <Bottom> 
     <d></d> 
     <e></e> 
     <f></f> 
     <g></g> 
    </Bottom> 
</Message> 

我希望選擇的值的節點的:C,e和f。

+0

'c','e'和'f'在一行中,管道是分開的嗎? – hroptatyr 2012-03-08 09:51:49

+0

對不起,沒有確認 – Mike 2012-03-08 09:59:18

回答

1
<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:output method="text"/> 

    <xsl:template match="c"> 
    <xsl:value-of select="text()"/> 
    <xsl:text>|</xsl:text> 
    </xsl:template> 

    <xsl:template match="e"> 
    <xsl:value-of select="text()"/> 
    <xsl:text>|</xsl:text> 
    </xsl:template> 

    <xsl:template match="f"> 
    <xsl:value-of select="text()"/> 
    <xsl:text>&#0010;</xsl:text> 
    </xsl:template> 

    <xsl:template match="text()"/> 

</xsl:stylesheet> 
+0

完美地工作謝謝你,你是否也碰巧知道如何將某些條目放到某個節點內的新行上。 – Mike 2012-03-08 10:04:31

+0

好吧,這完全是關於匹配,如果你可以形成一個匹配這個特定節點的xpath,你可以專門處理它,那麼早期的模板匹配會覆蓋後面的匹配。 – hroptatyr 2012-03-08 10:08:11

+0

我明白這一點,但你會使用ASCII碼還是有內置的方式來做到這一點與xslt? – Mike 2012-03-08 10:09:13