Re: [xsl] Re: Removing line-feeds on a imported tree via document

Subject: Re: [xsl] Re: Removing line-feeds on a imported tree via document
From: António Mota <amsmota@xxxxxxxxx>
Date: Wed, 26 Jan 2005 16:33:34 +0000
Hi Wendell, that seems to work ok, and it seems a very "neat"
solution, elegant, and very general so i can apply it without
regarding the inner structure of my $xmlfile.

I'm going to try it more deeply but it seems i'll use it.

Many thanks.


On Tue, 25 Jan 2005 16:39:16 -0500, Wendell Piez
<wapiez@xxxxxxxxxxxxxxxx> wrote:
> Antonio,
>
> You could use templates:
>
> <xsl:variable name="xmldoc" select="document($xmluri)/Menus/Menu"/>
>
> ...
> <xsl:apply-templates select="$xmldoc" mode="menu"/>
> ...
>
> <xsl:template match="*" mode="menu">
>    <!-- copies any elements -->
>    <xsl:copy>
>      <xsl:apply-templates mode="menu"/>
>    </xsl:copy>
> </xsl:template>
>
> <xsl:template match="text()" mode="menu">
>    <!-- trims whitespace -->
>    <xsl:value-of select="normalize-space(.)"/>
> </xsl:template>
>
> Of course, it works by applying a modification of the identity transform to
> the node set you call in.
>
> Cheers,
> Wendell
>
> At 02:28 PM 1/25/2005, you wrote:
> >I've solved my problem but i would like a more elegant solution, if
> >there is one...
> >
> >Instead of having
> ><xsl:variable name="xmldoc" select="document($xmluri)"/>
> ><...>
> ><xsl:copy-of select="$xmldoc/Menus/Menu" />
> >
> >i have now
> >
> ><xsl:variable name="xmldoc" select="document($xmluri)/Menus/Menu"/>
> ><...>
> ><Menu>
> ><xsl:for-each select="$xmldoc/node()">
> >         <xsl:copy><xsl:value-of select="normalize-space(.)"/></xsl:copy>
> ></xsl:for-each>
> ></Menu>
> >
> >that do the trick, but somehow i didn't like it very much.
> >
> >Any more sugestions? Thanks.
> >
> >On Tue, 25 Jan 2005 19:11:50 +0000, Antsnio Mota <amsmota@xxxxxxxxx>
wrote:
> > > Here's another interesting one. In my XSLT i have at some point
> > >
> > > <xsl:copy-of select="$xmldoc/Menus/Menu" />
> > >
> > > working ok, EXCEPT sometimes i get things like
> > >
> > > <Menu>
> > > <Menu_K>X00066</Menu_K>
> > > <Titulo>(Cada Utente)</Titulo>
> > > <MenuData>SELECT Utente_K, NomeLogin
> > > FROM Utente
> > > WHERE UtenteTipo='U'</MenuData>
> > > <MenuTipo>TXT</MenuTipo>
> > > </Menu>
> > >
> > > Notice the line breaks on MenuData, that is causing me problems later
> > > on. So i want to get rid of then. I've tryed using
> > >
> > > <xsl:copy-of select="normalize-space($xmldoc/Menus/Menu)" />
> > >
> > > because i don't understand nothing of this, but soon realise the
> > > error, so i went back and define a template
> > >
> > >         <xsl:template match="MenuData">
> > >                 <xsl:copy><xsl:value-of
> > select="normalize-space(.)"/></xsl:copy>
> > >         </xsl:template>
> > >
> > > but did no good, cause it seems that only match the original MenuDatas
> > > and not the imported ones.
>
>
> ======================================================================
> Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
> Mulberry Technologies, Inc.                http://www.mulberrytech.com
> 17 West Jefferson Street                    Direct Phone: 301/315-9635
> Suite 207                                          Phone: 301/315-9631
> Rockville, MD  20850                                 Fax: 301/315-8285
> ----------------------------------------------------------------------
>    Mulberry Technologies: A Consultancy Specializing in SGML and XML
> ======================================================================

Current Thread