If you want all the descendant elements rather than just all the
children, use select=".//*" rather than select="*". But perhaps you only
want the "leaf nodes" (descendants that don't have children). In that
case use select=".//*[not(*)]".
Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Delaney Robin
> Sent: 29 October 2002 10:29
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: AW: CSV instead of white-space
>
>
> 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.h.kay@xxxxxxxxxxxx]
> > Gesendet am: Montag, 28. Oktober 2002 18:54
> > An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Betreff: RE: 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.H.Kay@xxxxxxxxxxxx
> > work: Michael.Kay@xxxxxxxxxxxxxx
> >
> >
> > XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
> XSL-List info and
> archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|