Subject: Re: debugging source line numbers
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Tue, 21 Jan 2003 21:51:47 -0800 (PST)
|
In case preserving of whitespace-only nodes has not been turned off and
the xml source has "a single tag with all attributs/namespace
definitions" on a single line, then the following gives the exact line
number:
count(preceding::text()[contains(., '
')]) + 1
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
"S Woodside" <sbwoodside@xxxxxxxxx> wrote in message
news:FD40E2C0-2DC9-11D7-86C5-000393414368@xxxxxxxxxxxx
> The FAQ is pretty thin on debugging tips, so I thought I'd share
this
> that I came up with. the gurus on the list can probably improve it
;-)
>
> I wanted to include a line number in the output that would take me to
> the line in the source XML that is being processed. It's tricky
because
> the processor doesn't count close tags in the various number/count
> functions, but I came up with this xslt. In order to make it work you
> have to "pretty-print" your source document (like in BBEdit, format
as
> "hierarchical") to have one node / tag text per line. This trick
puts
> me within about +/- 20 lines of the right line, in my 2000 line
source
> file.
>
> <xsl:text>{{{</xsl:text>
> <xsl:value-of select="(count(preceding::* | ancestor::*) * 2 * 9
div
> 10 + 1" />
> <xsl:text>}}}</xsl:text>
>
> I multiply the result of the count by 2 because every node has a
close
> tag, thus doubling the number of lines. Except for the nodes that
don't
> have close tags, so I multiply by a "constant" that should be roughly
> the ratio of nodes with close tags to nodes w/o close tags, 9/10
seemed
> to work after fiddling. I can't remember what the +1 does ;-)
>
> simon
> ---
> www.simonwoodside.com
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|