Subject: RE: 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: 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
> > >
> ====================================================================
> > > ==
|