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(_at_)yahoo(_dot_)com> wrote in message
news:FD40E2C0-2DC9-11D7-86C5-000393414368(_at_)yahoo(_dot_)com(_dot_)(_dot_)(_dot_)
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