[xsl] Got some cool XSLT code that assembles parts together to create larger parts?

Subject: [xsl] Got some cool XSLT code that assembles parts together to create larger parts?
From: "Costello, Roger L." <costello@xxxxxxxxx>
Date: Mon, 19 Mar 2012 19:58:26 +0000
Hi Folks,

I need code that assembles parts together to create larger parts.

For example, consider this XML document:
------------------------------------------------------
<Document>
    <head id="head" idref="body" />

    <body id="body" idref="leg" />

    <leg id="leg" idref="toes" />

    <toes id="toes" />

</Document>
------------------------------------------------------
It contains a lot of parts - head, body, leg, toes.

Each part references another part (except toes doesn't reference another
part).

If a part references another part, I would like to inline the referenced part,
and then recurses on the referenced part.

After assembly the document should be this:
------------------------------------------------------
<Document>
    <head id="head">
        <body id="body">
            <leg id="leg">
                <toes id="toes" />
            </leg>
        </body>
    </head>

    <body id="body">
        <leg id="leg">
            <toes id="toes" />
        </leg>
    </body>

    <leg id="leg">
        <toes id="toes" />
    </leg>

    <toes id="toes" />
</Document>
------------------------------------------------------

I wonder if this particular example is a special case of a general case of
assembling parts together to create larger parts?

In any event, do you have some cool code that does the job?

Note that it's possible for a part A to reference a part B which references
part A (i.e., circular reference). So the code must avoid going into an
infinite loop.

/Roger

Current Thread