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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--