[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Generic template for collapsing arbitrary length runs o f same tag into one tag?


Subject: RE: [xsl] Generic template for collapsing arbitrary length runs o f same tag into one tag?
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 15 Aug 2002 18:37:08 -0400

Dave,

Nice solution! (you beat me to it)

I'd suggest two tiny tweaks, which you might judge to be merely aesthetic although the second does improve performance a bit:

At 02:26 PM 8/15/2002, you wrote:
<xsl:template match="i">
        <xsl:if test="not(name(preceding-sibling::node()[1])='i')">

I'd express this as test="not(preceding-sibling::node()[1][self::i])" as a slightly more direct use of XPath.


                <i>
                        <xsl:apply-templates/>
                        <xsl:if test="name(following::node()[1])='i'">
                                <xsl:apply-templates
select="following::node()[1]" mode="following"/>
                        </xsl:if>

Instead of an apply-templates wrapped in an xsl:if, I'd simply say


<xsl:apply-templates select="following-sibling::node()[1][self::i]" mode="following"/>

You don't need the test if you can express the selection in such a way that if the correct node is not there, nothing will come back.

                </i>
        </xsl:if>
</xsl:template>

<xsl:template match="i" mode="following">
        <xsl:apply-templates/>
        <xsl:if test="name(following::node()[1])='i'">
                <xsl:apply-templates select="following::node()[1]"
mode="following"/>
        </xsl:if>

Likewise here.


</xsl:template>

Seems to work in Saxon 6.5.2.

Well done! I don't think we've seen exactly this problem before.


But Richard, you should be aware that any intervening white space between your <i> elements will not be folded in, but will break the sequence.

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list




Current Thread
Keywords
xml