2012-03-08 120 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