Subject: [xsl] Can xsl:key use a globally declared variable? From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 16 Nov 2018 15:47:09 -0000 |
Hi Folks, I have an airports document containing data for several airports: <airports> <row> <icao>KBOS</icao> <name>Boston Logan Airport</name> </row> <row> <icao>KIAD</icao> <name>Washington Dulles Airport</name> </row> </airports> I want my XSLT program to output the <row> element for the airport with icao = KBOS. I declare a variable to hold the airports document: <xsl:variable name="airport-file" select="doc('airports.xml')"/> I declare an xsl:key to index the rows, using the <icao> element to identity the desired <row>: <xsl:key name="airports-with-icao" match="$airport-file/airports/row" use="icao"/> In a template I declare a variable to hold the icao of the desired airport: <xsl:variable name="airport-icao" select="'KBOS'"/> I use the key() function to obtain the desired <row>: <xsl:sequence select="key('airports-with-icao', $airport-icao)" /> The output is empty. Why? What am I doing wrong? How to fix it? Below is my complete XSLT program. /Roger <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" /> <xsl:variable name="airport-file" select="doc('airports.xml')"/> <xsl:key name="airports-with-icao" match="$airport-file/airports/row" use="icao"/> <xsl:template match="/"> <results> <xsl:variable name="airport-icao" select="'KBOS'"/> <xsl:variable name="Boston-airport-version1" select="key('airports-with-icao', $airport-icao)"/> <version1-results> <xsl:sequence select="$Boston-airport-version1" /> <!-- This produces no output --> </version1-results> <xsl:variable name="Boston-airport-version2" select="$airport-file/airports/row[icao eq $airport-icao]"/> <version2-results> <xsl:sequence select="$Boston-airport-version2" /> <!-- This produces the desired output --> </version2-results> </results> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: collection() and uncommon, Martin Holmes gtxxgm | Thread | Re: [xsl] Can xsl:key use a globall, Martin Honnen martin |
[xsl] Re: collection() and uncommon, Martin Holmes gtxxgm | Date | Re: [xsl] Can xsl:key use a globall, Martin Honnen martin |
Month |