[Home] [By Thread] [By Date] [Recent Entries]
Hi Kent, Following is a XSLT 1.0 solution to the problem: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/play"> <play> <xsl:apply-templates select="scene" /> </play> </xsl:template> <xsl:template match="scene">
<scene name="{.}">
<xsl:apply-templates select="following-sibling::character">
<xsl:with-param name="gen-id" select="generate-id()" />
</xsl:apply-templates>
</scene>
</xsl:template><xsl:template match="character"> <xsl:param name="gen-id" /> <xsl:if test="$gen-id = generate-id(preceding-sibling::scene[1])">
<character name="{.}">
<xsl:apply-templates select="following-sibling::line">
<xsl:with-param name="gen-id" select="generate-id()" />
</xsl:apply-templates>
</character>
</xsl:if>
</xsl:template><xsl:template match="line"> <xsl:param name="gen-id" /> <xsl:if test="$gen-id = generate-id(preceding-sibling::character[1])"> <xsl:copy-of select="." /> </xsl:if> </xsl:template> </xsl:stylesheet> This stylesheet, when applied to XML: <play> <scene>Scene 1</scene> <character>char 1</character> <line>blah blah blah</line> <line>blah blah blah</line> <line>blah blah blah</line> <character>char 2</character> <line>blah blah blah</line> <line>blah blah blah</line> <line>blah blah blah</line> <character>char 3</character> <line>blah blah blah</line> <line>blah blah blah</line> <line>blah blah blah</line> <scene>Scene 2</scene> <character>char 1</character> <line>blah blah blah</line> <line>blah blah blah</line> <line>blah blah blah</line> </play> Produces output: <?xml version="1.0" encoding="UTF-8"?>
<play>
<scene name="Scene 1">
<character name="char 1">
<line>blah blah blah</line>
<line>blah blah blah</line>
<line>blah blah blah</line>
</character>
<character name="char 2">
<line>blah blah blah</line>
<line>blah blah blah</line>
<line>blah blah blah</line>
</character>
<character name="char 3">
<line>blah blah blah</line>
<line>blah blah blah</line>
<line>blah blah blah</line>
</character>
</scene>
<scene name="Scene 2">
<character name="char 1">
<line>blah blah blah</line>
<line>blah blah blah</line>
<line>blah blah blah</line>
</character>
</scene>
</play>On 8/14/06, Kent Seegmiller <hookjaw20@xxxxxxxxxxx> wrote:
http://gandhimukul.tripod.com
|

Cart



