Subject: RE: text() children
From: "Pawson, David" <DPawson@xxxxxxxxxxx>
Date: Mon, 20 Dec 1999 08:56:41 -0000
|
Steve Tinney wrote:
>
>I dunno. I tried Mike Kay's hint with priorities but couldn't
>make it fly. I think the following does what David asks for
>in the statement below; can't help feeling there should be
>something more elegant, though, and I bet it doesn't really
>handle the real life cases ....
>
> Steve
>
>---
><xsl:stylesheet version="1.0"
>xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
><xsl:template match="/">
> <xsl:apply-templates/>
></xsl:template>
>
><xsl:template match="div">
> <xsl:for-each select="./node()">
> <xsl:choose>
> <xsl:when test="name()='p'">
> <xsl:copy-of select="."/>
> </xsl:when>
> <xsl:otherwise>
> <xsl:if test="position()=1">
> <p>
> <xsl:value-of select="."/>
> <xsl:call-template name="copy-non-p"/>
> </p>
> </xsl:if>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:for-each>
></xsl:template>
>
><xsl:template name="copy-non-p">
> <xsl:param name="index" select="1"/>
> <xsl:variable name="node"
>select="./following-sibling::node()[$index]"/>
> <xsl:if test="not(name($node)='p')">
> <xsl:apply-templates select="$node"/>
> <xsl:call-template name="copy-non-p">
> <xsl:with-param name="index" select="$index+1"/>
> </xsl:call-template>
> </xsl:if>
></xsl:template>
>
><xsl:template match="a">
> <xsl:copy-of select=".|@*"/>
></xsl:template>
>
><xsl:template match="p">
> <xsl:copy-of select="."/>
></xsl:template>
>
></xsl:stylesheet>
>---
Now there's interesting!
Inserted your code Steve,
and xt gave me
java.lang.StackOverflowError
Never had that one before!
Did it work on the snippet I posted Steve?
regards, DaveP
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|