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 document. You have: ><returnType>Person</returnType> 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: <program> <method name="getPerson"> <returnType><type>Person</type></returnType> <params/> </method> <method name="setPerson"> <returnType/> <params> <param name="p"><type>Person</type></param> </params> </method> </program> 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="." /> <xsl:text>.h"
</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> 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: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] data structure in xslt?, Trevor Nash | Thread | RE: [xsl] data structure in xslt?, Passin, Tom |
RE: [xsl] Formated text output, Michael Kay | Date | RE: [xsl] fallback, saxon and MSXSL, DPawson |
Month |