|
Subject: RE: [xsl] Keeping comments with relevant node when shorting nodes From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 14 Jan 2005 23:56:30 -0000 |
Sounds like it might be a good idea to do an initial pass that wraps the N
element and its preceding comments in a wrapper element. That's a positional
grouping problem:
<xsl:for-each-group select="child::node()" group-ending-with="N">
<wrapper>
<xsl:copy-of select="current-group()"/>
</wrapper>
</xsl:for-each-group>
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Mike Blake-Knox [mailto:mikebk824@xxxxxxxxx]
> Sent: 14 January 2005 20:33
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Keeping comments with relevant node when
> shorting nodes
>
> That sorts nicely but unfortunately, we have several comments in front
> of some node.
>
> I haven't been able to come up with a method of grouping the comments
> with their associated nodes. Would you have any suggestions?
>
> The current xsl is:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output indent="yes" method="xml"/>
>
> <xsl:template match="node() | @*">
> <xsl:copy>
> <xsl:apply-templates select="@* | node()"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match="Ns">
> <xsl:copy>
> <xsl:apply-templates select="N">
> <xsl:sort select="@name"/>
> </xsl:apply-templates>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match="N">
> <xsl:copy-of
> select="preceding-sibling::node()[normalize-space()][1][self::
> comment()]
> "/>
> <xsl:copy-of select="."/>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
>
> On Thu, 13 Jan 2005 23:21:51 -0000, Michael Kay
> <mike@xxxxxxxxxxxx> wrote:
> > Try:
> >
> > <xsl:apply-templates select="N">
> > <xsl:sort select="@name"/>
> > </xsl:apply-templates>
> >
> > <xsl:template match="N">
> > <xsl:copy-of select="preceding-sibling::comment()[1]
> > <xsl:copy-of select="."/>
> > </xsl:template>
> >
> > This assumes that every N element has an associated comment.
> >
> > Michael Kay
> > http://www.saxonica.com/
> >
> > > -----Original Message-----
> > > From: Mike Blake-Knox [mailto:mikebk824@xxxxxxxxx]
> > > Sent: 13 January 2005 22:32
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: [xsl] Keeping comments with relevant node when
> shorting nodes
> > >
> > > I have several XML files like the following:
> > >
> > > <!-- CNs-->
> > > <Ns>
> > > <!--CN1-->
> > > <N name="N1">
> > > <Ms>
> > > <!--C1N3-->
> > > <M name="1N3"/>
> > > <!--C1N1-->
> > > <M name="1N1"/>
> > > <!--C1N2-->
> > > <M name="1N2"/>
> > > </Ms>
> > > </N>
> > > <!--CN2-->
> > > <N name="N2">
> > > <Ms>
> > > <!--C2N2-->
> > > <M name="2N2"/>
> > > <!--C2N3-->
> > > <M name="2N3"/>
> > > <!--C2N1-->
> > > <M name="2N1"/>
> > > </Ms>
> > > </N>
> > > </Ns>
> > >
> > >
> > > I'd like to sort them while keeping comments with the
> nodes they refer
> > > to (e.g., keep <!--CN2--> with <M name="2N2"/>).
> > >
> > > I've tried the following xslt:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > > <xsl:output indent="yes" method="xml"/>
> > >
> > > <xsl:template match="node() | @*">
> > > <xsl:copy>
> > > <xsl:apply-templates select="@* | node()"/>
> > > </xsl:copy>
> > > </xsl:template>
> > >
> > > <xsl:template match="Ns">
> > > <xsl:copy>
> > > <xsl:apply-templates select="comment()| N" >
> > > <xsl:sort select="@name"/>
> > > </xsl:apply-templates>
> > > </xsl:copy>
> > > </xsl:template>
> > > </xsl:stylesheet>
> > >
> > > It sorts fine but puts the comments for all the N nodes
> together at
> > > the top of the Ns element. I've played around with trying
> to group the
> > > comments and N nodes using preceding-sibling but have not been
> > > succesful.
> > >
> > > Any ideas?
> > >
> > > Thanks
> > >
> > > --
> > > Mike Blake-Knox
> >
> >
>
>
> --
> Mike Blake-Knox
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Keeping comments with rel, Mike Blake-Knox | Thread | [xsl] Trying to Achieve inside/outs, W. Eliot Kimber |
| Re: [xsl] Keeping comments with rel, Wendell Piez | Date | [xsl] Complex XPath Expression, Karl Stubsjoen |
| Month |