FWIW, Saxon has an extension function saxon:line-number() that gives the
line number of the context node in the source document (provided you run
Saxon with the -l option).
Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of S Woodside
> Sent: 22 January 2003 05:26
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: debugging source line numbers
>
>
> 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
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|