RE: [xsl] Preceding comment() match

Subject: RE: [xsl] Preceding comment() match
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 22 Dec 2006 00:09:27 -0000
Just google for

XSLT replace newline with <br> element

or try

http://www.biglist.com/lists/xsl-list/archives/200103/msg00184.html

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: Karl Stubsjoen [mailto:kstubs@xxxxxxxxx] 
> Sent: 21 December 2006 23:56
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Preceding comment() match
> 
> I probably shouldn't go here...
> so, now that I am self-documenting these comments, I'd like 
> to create line breaks for the web, where line break occur 
> naturally in my comments, so:
> 
> <!--
>    these are comments
>    with line breaks
>    should output to browser with
>    these line breaks.
> -->
> 
> Currently, this:
> 
> <xsl:value-of 
> select="preceding-sibling::node()[not(self::text()[not(normali
> ze-space())])][1][self::comment()]"/>
> 
> Produces no line breaks.  If I include <br/>(s) in the above 
> comments and add disable-output-escaping="yes" to my 
> value-of... I get the line breaks, but who wants to add these 
> "unnatural" html elements to these comments!
> 
> Any hints?
> 
> 
> 
> On 12/21/06, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> > Working perfect ; )
> > Nothing like self-documenting XSL Docs!
> >
> > Karl..
> >
> > On 12/21/06, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
> > > Karl,
> > >
> > > Please double check your code. I would expect "every preceding 
> > > element's first comment tag" to be 
> > > "preceding-sibling::*/comment()[1]" (note extra step). The 
> > > expression you provided us, 
> "preceding-sibling::comment()[1]", would 
> > > select the first preceding (sibling) comment.
> > >
> > > If you want the first preceding node, but only if it's a comment, 
> > > that would be
> > >
> > > preceding-sibling::node()[1][self::comment()]
> > >
> > > but note that whitespace-only text nodes can impede that.
> > >
> > > Working around those would be
> > >
> > > 
> preceding-sibling::node()[not(self::text()[not(normalize-space()])]
> > >                          [1][self::comment()]"
> > >
> > > ... which I know is a monster, but there you have it.
> > >
> > > Cheers,
> > > Wendell
> > >
> > > At 04:53 PM 12/21/2006, you wrote:
> > > >I need to match the first comment() preceding the 
> current context.
> > > >
> > > >So from:
> > > >
> > > ><!--
> > > >this is the comments, first preceding
> > > >-->
> > > ><xsl:template name="example">
> > > >
> > > ></xs:template>
> > > >
> > > >
> > > >Assuming that this xpath should work:
> > > ><xsl:value-of select="preceding-sibling::comment()[1]"/>
> > > >
> > > >But instead, I am matching on every preceding elements first 
> > > >comment tag.  I just need "your" comment tag, and if you 
> don't have 
> > > >one, then nevermind.
> > > >
> > > >Please help.
> > > >
> > > >Karl..
> > >
> > >
> > > 
> ======================================================================
> > > 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