xsl-list
[Top] [All Lists]

RE: xsl array alternatives (novice)

2002-09-18 12:41:42
Hi Isaac

I have xml that looks something like this:

Exhibit A. --before
(many other irrelevent records)...
<nodeA att1="True" att2="N" att3="1234"/>
<nodeA att1="True" att2="N" att3="321"/>
<nodeA att1="True" att2="N" att3="456"/>
<nodeA att1="True" att2="Y" att3="9876"/>
<nodeB att1="True" att5="Y" att3="45"/>
<nodeB att1="True" att5="N" att3="65"/>
<nodeC att1="True" att7="Y" att3="784"/>
<nodeC att1="True" att7="Y" att3="412"/>
<nodeC att1="True" att7="N" att3="635"/>
...(many other irrelevent records)

I would like to create xml output that looks something like this:

Exhibit B. --after
(many irrelevent records)...
<nodeA att1="True" att2="N" att3="1234"/>
<nodeA att1="True" att2="N" att3="321"/>
<nodeA att1="True" att2="N" att3="456"/>
<nodeB att1="True" att5="N" att3="65"/>
<nodeC att1="True" att7="N" att3="635"/>
...(many irrelevent records that may or may not have duplicate attribute
names and values)
<nodeA att1="True" att2="Y" att3="9876"/>
<nodeB att1="True" att5="Y" att3="45"/>
<nodeC att1="True" att7="Y" att3="784"/>
<nodeC att1="True" att7="Y" att3="412"/>
<end of document/>

Why not use a key:

<xsl:key name="getNodes" match="nodeA|nodeB|nodeC" use="@*"/>

Then all you need to do is:

<xsl:copy-of select="key('getNodes','N')"/>
<xsl:copy-of select="key('getNodes','Y')"/>

Cheers

S

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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