Subject: Re: [xsl] checking if an element starts-with a certain string using keys From: Harm Kok <h.kok@xxxxxxxxxxxxxxx> Date: Mon, 14 Feb 2005 11:00:00 +0100 |
<field> <code>PYTT/030/040</code> <element/> </field> <field> <code>PYTT/030/040/050</code> <element/> </field>
Hi,
I got a problem with defining my keys right. I got a separate XML file where I want to lookup things according to a code. The XML structure file looks as follows:
<fields> <field> <code>PYTT/010</code> <element>foo</element> <element>bar</element> </field> <field> <code>PYTT/020</code> <element>bar</element> </field> </fields>
In the main XML file the codes contain more numbers for example: <org code="PYTT/010/030/040"/>
I want to access the first file using keys. I already managed to access using a for-each and this works fine but too slow.
Define key
<xsl:key name="field" match="field" use="code"/>
The code looks like this:
<xsl:variable name="code" select="@code"/>
<xsl:for-each select="document($structure-doc)">
<xsl:for-each select="fields/field[starts-with($code, code)] ">
Here use
<xsl:for-each select="key('field', substring($code, 0, 9))">
or
<xsl:for-each select="key('field', concat(substring-before($code, '/'), '/', substring-before(substring-after($code, '/'), '/')))">
I.e. you can't use starts-with, you use the equality operator for key lookups.
Cheers,
Jarno - Madam Zu: August 2003 Part 2
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] checking if an element st, Jarno.Elovirta | Thread | Re: [xsl] checking if an element st, David Carlisle |
[xsl] XSL Sheet for Varying Node Na, jeb501 | Date | Re: [xsl] checking if an element st, David Carlisle |
Month |