This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Design question
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 10 Jul 2002 09:09:04 +0100
- Subject: RE: [xsl] Design question
- Reply-to: xsl-list at lists dot mulberrytech dot com
> I'm attempting to use XSL to transform XML to XML. The
> problem is that
> some child elements in the original XML are "attributes" of
> the new XML
> element, whereas other child "elements" are actually new
> child elements.
> That is:
>
> BEFORE:
> <test type="positive" name="Test 1">
> <param name="p1">123</param>
> <param name="date1">July 9</param>
> <param name="p2">false</param>
> </test>
>
> AFTER:
> <da:Positive name="Test 1" p1="123" p2="false">
> <da:Date number="1" value="July 9"/>
> </da:Positive>
>
> (Notice that p1 and p2 become attributes of the new element,
> but date1
> becomes a new child element.)
>
> From what I can tell, I need to accomplish the equivalent of the
> following, but haven't been able to come up with the way to do it:
>
> (1) Iterate through all original <param>s. For each <param> that will
> become an attribute, do <xsl:attribute>. For each <param>
> that will become
> a child element, store it off to the side in a node set of some sort.
>
> (2) When the iteration is complete, iterate through the node
> set built in
> (1), and do <xsl:element> on each.
>
A simpler approach is to iterate through the original params twice; the
first time, select those that will become attributes, the second time,
select those that will become child elements.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list