|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: debugging source line numbers
"Roger Glover" <glover_roger@xxxxxxxxx> wrote:
>
> Dimitre Novatchev wrote:
> > 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
>
> This counts text nodes, not line feeds. If a text node has more than
> one
> line feed it will still only count as one text node in the final
> result.
>
> I think it is on the right track, but it does not quite work as
> currently
> written.
>
> -- Roger Glover
> glover_roger@xxxxxxxxx
Yes, too sleepy this morning... (:o
Here's the transformation, which does what was initially intended:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="*">
<xsl:variable name="vPrevText">
<x>
<xsl:copy-of
select="preceding::text()[contains(., '
')]"/>
<xsl:for-each select="preceding::comment()
[contains(., '
')]">
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:for-each
select="preceding::processing-instruction()
[contains(., '
')]">
<xsl:value-of select="."/>
</xsl:for-each>
</x>
</xsl:variable>
<xsl:variable name="vLineNo"
select="string-length($vPrevText) + 1
-
string-length(translate($vPrevText, '
', ''))"/>
<xsl:value-of select="concat(name(),
' : line ',
$vLineNo,
'
')"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="node()[not(self::*)]"/>
</xsl:stylesheet>
It also takes care of multiline comments / processing-instructions.
When applied on this source.xml:
<root>
<item>1</item>
<!-- -->
<!--
-->
<item>5</item>
<item>3</item>
<item>2</item>
<item>6</item>
<item>4</item>
</root>
The result is:
root : line 1
item : line 2
item : line 6
item : line 7
item : line 8
item : line 9
item : line 10
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
__________________________________________________
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








