xsl-list
[Top] [All Lists]

Re: [xsl] Splitting content from sub-elements

2009-06-16 09:50:05
At 2009-06-16 15:30 +0200, Casper Voortman wrote:
I'm having trouble with breaking down a piece of XML into a simpler
structure by using xslt 1.0.

The problem concentrates itself specifically around splitting the
content within a <Text> element from the <FootNote>, which is also
part of the same element <Text >, and still keeping the order within
the <Paragraph> intact.

Sounds to me like you are trying to use pull (xsl:for-each) rather than push (xsl:apply-templates).

Any suggestions would be much appreciated.

I hope the example below helps. Note that your desired output is the same order as the input, so it is a simple matter of substitution.

. . . . . . . . . . . Ken


t:\ftemp>type casper.xml
<Paragraph Pstyle="Plattetekst">
    <Text Cstyle="[No character style]">A line of text.</Text>
    <Text Cstyle="Cursief">Another line of text.</Text>
    <Text Cstyle="[No character style]">A 3rd line of text<FootNote
ID="14">
        <Paragraph Pstyle="Voetnoot">
            <Text Cstyle="[No character style]">This is the content
of the footnote.</Text>
        </Paragraph>
    </FootNote>that contains a footnote.</Text>
    <Text Cstyle="Cursief">A 4th line of text.</Text>
    <Text Cstyle="[No character style]">A 5th line of text that
also<FootNote ID="15">
        <Paragraph Pstyle="Voetnoot">
            <Text Cstyle="[No character style]">This is the 2nd
footnote.</Text>
        </Paragraph>
    </FootNote>a footnote.</Text>
</Paragraph>
t:\ftemp>call xslt casper.xml casper.xsl
<?xml version="1.0" encoding="utf-8"?><para>
    A line of text.
    <emphasis role="italic">Another line of text.</emphasis>
    A 3rd line of text<footnote label="14">
        <para>
            This is the content
of the footnote.
        </para>
    </footnote>that contains a footnote.
    <emphasis role="italic">A 4th line of text.</emphasis>
    A 5th line of text that
also<footnote label="15">
        <para>
            This is the 2nd
footnote.
        </para>
    </footnote>a footnote.
</para>
t:\ftemp>type casper.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:template match="Paragraph">
  <para><xsl:apply-templates/></para>
</xsl:template>

<xsl:template match="FootNote">
  <footnote label="{(_at_)ID}"><xsl:apply-templates/></footnote>
</xsl:template>

<xsl:template match="Text[(_at_)Cstyle='Cursief']">
  <emphasis role="italic"><xsl:apply-templates/></emphasis>
</xsl:template>

<xsl:template match="Text">
  <xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>
t:\ftemp>rem Done!



--
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>