Re: [xsl] data structure in xslt?

Subject: Re: [xsl] data structure in xslt?
From: Trevor Nash <tcn@xxxxxxxxxxxxx>
Date: Wed, 09 Oct 2002 11:46:23 +0100
On second thoughts, you first need to rethink the design of your input

You have:

and then:
><param type="Person" name="p"/>

These are the same 'Person' but you are using different markup for the
two.  You will find things much easier if you are consistent.

I would choose an element for this kind of thing.  You could rewrite
your input document (adding some missing tags) as:

<method name="getPerson">

<method name="setPerson">
<param name="p"><type>Person</type></param>

Then, using xsl:key as suggested by others your #include is very easy:

<xsl:key name="types" match="type" use="." />
<xsl:key name="types" match="type" use="'_all_'" />

<xsl:template match="/" >
   <xsl:for-each select="key('types', '_all_')">
      <xsl:if test="count(.|key('types', .)[1])=1">
         <xsl:text>include "</xsl:text>
         <xsl:value-of select="." />

Notes: "key('types', '_all_')" is the same as "//type" but may be a
little faster.
"count(.|key('types', .)[1])=1" is finding out if the current node is
the first one with this name.  It relies on the union operator on
node-sets throwing away duplicates.

Trevor Nash
Traditional training & distance learning,
Consultancy by email

Melvaig Software Engineering Limited
voice:     +44 (0) 1445 771 271 
email:     tcn@xxxxxxxxxxxxx

 XSL-List info and archive:

Current Thread