2016-07-28 64 views
1

我得到這個簡單的XML文檔:XML到CSV使用XSL模板

<?xml version="1.0"?> 
<document> 
<category> 
    <id>20504  </id> 
    <title>ADSL iranga</title> 
    <parent>Kompiuterinio tinklo</parent> 
</category> 
<category> 
    <id>20902</id> 
    <title>Akumuliatoriai</title> 
    <parent>Baterijos akumuliatoriai</parent> 
</category> 
</document> 

這XSL模板:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="utf-8"/> 
<xsl:strip-space elements="*" /> 

<xsl:template match="/category"> 
    <xsl:value-of select="id" /><xsl:text>,</xsl:text> 
    <xsl:value-of select="title" /><xsl:text>,</xsl:text> 
</xsl:template> 


</xsl:stylesheet> 

我想獲得這個簡單的輸出:

id,title 
id,title 
id,title 
<...> 

但是,我沒有得到我預期的分隔符「,」 我是否以某種錯誤的方式使用xsl:文本?

我正在使用xsltproc進行轉換。

回答

2

category不是您的輸入XML的根元素 - 因此您的模板不會匹配任何內容,並且您看到的輸出是由內置的模板規則生成的。

你需要改變:

<xsl:template match="/category"> 

到:

<xsl:template match="category"> 

我想你也想改變第二:

<xsl:text>,</xsl:text> 

到:

<xsl:text>&#10;</xsl:text>