Michael,
Thanks for your reply/help. It almost works :-)
I get all the data right through the hierarchy but once I get to elements
that have "children" themselves the placing of the "," doesn't happen. It
seems to limit itself to direct children of the <Vertrag> (for them it works
perfectly!). Here's a subset of the XML & XSL to explain. Within <Mandant> I
don't see the "," between elements and the same for <Partner> and levels
below. For all the others it's fine. Any Idea ?
Sorry to hassle you directly (don't let it put you off replying in the
future :-) ) and thanks for any help in advance.
- Robin
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE BFZV01 SYSTEM "BFZV01.dtd">
<?xml-stylesheet type="text/xsl"
href="E:\XML\test\XSLtemplate.xsl"?>
<BFZV01>
<Vertrag>
<Mandant>
<MandantenID>01</MandantenID>
<AnbieterNr>1234567890</AnbieterNr>
</Mandant>
<ZertifizierungsNr/>
<BestandsverwaltungssystemNr>01</BestandsverwaltungssystemNr>
<VertragsIDintern>01123456</VertragsIDintern>
<VertragsIDextern>123456</VertragsIDextern>
<OrgaNr/>
<InexkassosystemNr>01</InexkassosystemNr>
<Beitragsjahr>2001</Beitragsjahr>
<Beitrag waehrungskennzeichen="EUR">150,00</Beitrag>
<SachbearbeiterID>12345678</SachbearbeiterID>
<Legitimationsklassevertrag
legitimationsklasse="J"/>
<Persoenlichedaten>
<Versicherteperson>
<Partner>
<PartnersystemNr>01</PartnersystemNr>
<PartnerID>123456789</PartnerID>
<KundenNr/>
<Legitimationsklassepartner
legitimationsklasse="J"/>
<Rolle rolle="Rolle.VP"/>
<Anrede>Herr</Anrede>
XSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Vertrag">
<xsl:for-each select="*">
<xsl:value-of select="."/>
<xsl:if
test="position()!=last()">;</xsl:if>
</xsl:for-each>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
Output:
01 1234567890 ;;01;01123456;123456;;01;2001;150,00;12345678;; 01
123456789 Herr
-----Ursprüngliche Nachricht-----
Von: Michael Kay [SMTP:michael(_dot_)h(_dot_)kay(_at_)ntlworld(_dot_)com]
Gesendet am: Montag, 28. Oktober 2002 18:54
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Betreff: RE: [xsl] CSV instead of white-space
I'm trying to create a CSV TXT file from an XML and have the
following XSL. There's a large hierarchy of elements under
the "Vertrag" element and I'm trying not to have to select
them individually as the structure may change. My select
statement works and I get all the values with at least 1
whitespace between elements.
Is there a way to either replace the whitespace with a ";" or
to concat a ";" onto my selection ?
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Vertrag">
<xsl:value-of select="(.)"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
Try
<xsl:for-each select="*">
<xsl:value-of select="."/>
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:for-each>
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list