xsl-list
[Top] [All Lists]

Re: [xsl] Hierarchy to Flat Structure

2013-03-17 05:00:01
Hi Rick,

If you add a template for your root

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

 you could simply do this

   <xsl:template match="*">
        <xsl:copy-of select="." />
    </xsl:template>

for covering all the sibling notes

I have two observations however.

- it is worth looking into so called "sibling recursion" for doing such a task in XSLT1.
I will post an example in a minute

- it is worth considering XSLT2 for this task. Let me know if that is a viable path.
It has grouping functionality built in for a task like this

Cheers

Geert




At 02:57 17/03/2013, you wrote:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

    <xsl:output indent="yes" />

    <xsl:template match="Cases/Cases">
    <Cases>
        <xsl:apply-templates select="Category" />
    </Cases>
    </xsl:template>

    <xsl:template match="Category">
        <Case>
            <Category><xsl:value-of select="." /></Category>
            <xsl:apply-templates
                select="following-sibling::CaseTitle
                [generate-id(preceding-sibling::Category[1])
                = generate-id(current())]" />
            <xsl:apply-templates
                select="following-sibling::Institution
                [generate-id(preceding-sibling::Category[1])
                = generate-id(current())]" />
        </Case>
    </xsl:template>

    <xsl:template match="CaseTitle">
        <xsl:copy-of select="." />
    </xsl:template>

    <xsl:template match="Institution">
        <xsl:copy-of select="." />
    </xsl:template>

</xsl:stylesheet>


--~------------------------------------------------------------------
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>