| Steve Muench
| Are you saying that there is a way of "getting list from the
| database" ?
The document() function allows any XML resource reachable
via a URI to be brought into the XSLT processing. Several
technologies are available to make dynamic database
content easily "reachable via HTTP URL" as XML resources.
Here's an example that uses document() to retrieve the <Code>
and <Description> of any airports in the world matching
the value of the "code" parameter passed into the stylesheet.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:param name="code"/>
<xsl:template match="/">
<Airports xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">
<xsl:variable name="baseUrl"
select="'http://ws5.olab.com/xsql/demo/airport/airport.xsql?airport='"/>
<xsl:variable name="dataServiceUrl" select="concat($baseUrl,$code)"/>
<xsl:variable name="dynamicAirportList" select="document($dataServiceUrl)"/>
<xsl:for-each select="$dynamicAirportList">
<xsl:copy-of select="//Airport/Code | //Airport/Description" </xsl:for-each>
</Airports>
</xsl:template>
</xsl:stylesheet>
$ oraxsl -p code='xml' any.xml airports.xsl
Returns:
<?xml version = '1.0' encoding = 'UTF-8'?>
<Airports>
<Code>XML</Code>
<Description>Minlaton, Sa, Australia</Description>
</Airports>
$ xt any.xml airports.xsl code='paul'
Returns:
<?xml version = '1.0' encoding = 'UTF-8'?>
<Airports>
<Code>CGH</Code>
<Description>Sao Paulo, Sp, Brazil-Congonha</Description>
<Code>GRU</Code>
<Description>Sao Paulo, Sp, Brazil-Guarulho</Description>
<Code>KPH</Code>
<Description>Pauloff Harbor, Alaska, Usa</Description>
<Code>MSP</Code>
<Description>Minneapolis/St. Paul-Intl</Description>
<Code>PAV</Code>
<Description>Paulo Afonso, Ba, Brazil</Description>
<Code>SAO</Code>
<Description>Sao Paulo, Sp, Brazil-Guarulho</Description>
<Code>SNP</Code>
<Description>St. Paul Island, Alaska, Usa</Description>
<Code>STP</Code>
<Description>Minneapolis/St. Paul-Dntn</Description>
<Code>SVM</Code>
<Description>St. Paul'S Mission, Qld, Austr</Description>
<Code>SVV</Code>
<Description>San Salvador De Paul, Venezuel</Description>
</Airports>
On the server side, sitting out on the Internet is an Oracle XSQL Page
at the URL: http://ws5.olab.com/xsql/demo/airport/airport.xsql
and an Oracle database with a table of all airports in the world.
Which looks like this:
<?xml version="1.0"?>
<xsql:query xmlns:xsql="urn:oracle-xsql"
connection="demo"
rowset-element="Ok"
max-rows="1"
row-element="Airport" >
SELECT tla "Code", description "Description"
FROM AIRPORT
WHERE tla = UPPER('{@airport}')
<xsql:no-rows-query
max-rows="10"
rowset-element="Error"
row-element="Airport" >
SELECT tla "Code", description "Description"
FROM AIRPORT
WHERE UPPER(description) LIKE UPPER('%{@airport}%')
ORDER BY tla
</xsql:no-rows-query>
</xsql:query>
|
| Evan Lenz
For anyone who might be interested, I've posted my XSLT-UK slides at the
following URLs:
http://www.xmlportfolio.com/xsltuk/slides
http://www.xmlportfolio.com/xsltuk/slides.zip (zipped version)
The updated/adapted paper on XQuery is available here: http://www.xmlportfolio.com/xquery.html Enjoy,
Evan Lenz
|