|
Subject: Re: [xsl] Re: Wrapping problem From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Tue, 15 Aug 2006 14:00:57 +0530 |
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: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>
<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>
<?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>My apologies. for not making that clear. The following is my input. I want to wrap a script from a play in a file "movie1.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> The output I want to look like so: <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>
>> My question: How do I wrap the scenes and characters. So far >> my strained brain can only think of creating a text file and >> using "<scene>" or "<character>" to place the end >> element then renaming the text file to xml. >> thanks Kent
-- Regards, Mukul Gandhi
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Re: Wrapping problem, Michael Kay | Thread | RE: [xsl] Re: Wrapping problem, Michael Kay |
| Re: [xsl] converting empty nodes to, KrasiG | Date | RE: [xsl] Re: Wrapping problem, Michael Kay |
| Month |