[Home] [By Thread] [By Date] [Recent Entries]
At 2007-11-01 13:34 +0000, Andrew Welch wrote:
On 01/11/2007, G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote: > Then I recommend you change it to the following: > > match="s[(ancestor::b[1]//text()[normalize-space()])[last()] >> .]" > > ... so that you catch text nodes that have non-white-space > characters, or alternatively that you ensure all white-space-only > text nodes are removed from the source tree by either an > <xsl:strip-space> instruction or at invocation. > > I'm thinking that with the original proposal any indentation found in > the source tree would allow the <s> to be matched. Yes, I'm quite sure. It was obvious by visually inspecting the sample input XML ... there are so many text nodes there. Did you run your own suggestion as a test? Here, let me take the time to do it for you ... the answer is below. I was only trying to help. If I've misunderstood the original poster's question, then I withdraw my suggestion and I apologize. . . . . . . . . . . . Ken t:\ftemp>type sascha.xml
<a>
aaa
<b>
bbb
<c>
ccc
<s/>
</c>
BBB
</b>
AAA
<b>
bbb
<c>
ccc
<s/>
</c>
</b>
AAA
</a>t:\ftemp>type sascha.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"><xsl:output method="text"/> <xsl:template match="/"> <xsl:apply-templates select="//s"/> </xsl:template> <xsl:template match="s"> <xsl:value-of select="position()"/>: no </xsl:template> <xsl:template match="s[(ancestor::b[1]//text())[last()] >> .]">
<xsl:value-of select="position()"/>: yes
</xsl:template></xsl:stylesheet> t:\ftemp>call saxon8 sascha.xml sascha.xsl t:\ftemp>java -Xms200m -Xmx700m -jar p:\xml\xslt\saxon8\saxon8.jar sascha.xml sascha.xsl 1: yes 2: yes t:\ftemp>type sascha2.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"><xsl:output method="text"/> <xsl:template match="/"> <xsl:apply-templates select="//s"/> </xsl:template> <xsl:template match="s"> <xsl:value-of select="position()"/>: no </xsl:template> <xsl:template match="s[(ancestor::b[1]//text()[normalize-space()])[last()] >> .]"> <xsl:value-of select="position()"/>: yes </xsl:template> </xsl:stylesheet> t:\ftemp>call saxon8 sascha.xml sascha2.xsl t:\ftemp>java -Xms200m -Xmx700m -jar p:\xml\xslt\saxon8\saxon8.jar sascha.xml sascha2.xsl 1: yes 2: no t:\ftemp>rem Done!
|

Cart



