2016-07-28 15 views
1

ich dieses einfachen XML-Dokument bekam:XML CSV XSL-Vorlage mit

<?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> 

Und diese xsl Vorlage:

<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> 

Ich mag diese einfache Ausgabe erhalten:

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

Allerdings bekomme ich nicht mein erwartetes Trennzeichen "," Verwende ich den xsl: Text in einer falschen Art und Weise?

Ich verwende xsltproc für die Konvertierung.

Antwort

2

category ist nicht das Stammelement Ihrer XML-Eingabe - Ihre Vorlage entspricht also nichts, und die Ausgabe, die Sie sehen, wird von den integrierten Vorlagenregeln erzeugt.

Sie müssen sich ändern:

<xsl:template match="/category"> 

zu:

<xsl:template match="category"> 

Ich glaube, Sie wollen auch die zweite ändern:

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

zu:

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