Pass file name parameter to xsl stylesheet

Luke Airig

Usenet Archive
Joined
Dec 15, 2003
Messages
6
Reaction score
0
I am using the Saxon 6.5.3 engine and I have an xsl stylesheet that merges two files on a date_time field and writes out a tab-delimited flat file. My working version has a hard-coded file name in the xsl file. I dug through the Saxon documenation to find a way to feed a file name param to eliminate the hard-coded file name in the xsl. This version executes but does not appear to do the merge processing and drops the longitude and latitude values. Can anyone give me some insight as to what I am doing wrong with this? My command line run syntax is commented at the bottom.

merge_lrv_gps_and_trans_to_tab_delim.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:eek:utput method="text"/> <xsl:variable name="delim" select="' '"/> <!-- tab --> <xsl:variable name="nl" select="' '"/> <!-- newline --> <xsl:variable name="head"> <xsl:for-each select="/root/header/*"> <xsl:value-of select="concat(., $delim)"/> </xsl:for-each> </xsl:variable>

<xsl:template match="/">
<xsl:apply-templates select="root/record"/>
</xsl:template>

<xsl:template match="record">
<!--note: if lrv_gps.xml is in a different directory, you will need to use the relative path or URL--> <!-- select="document('lrv_gps.xml')/root/record[date_time = current/date_time]"/> --> <xsl:param name="lrv_gps_file"/> <xsl:variable name="gps" select="document($lrv_gps_file)/root/record[date_time = current/date_time]"/> <xsl:value-of select="$head"/> <xsl:value-of select="concat($gps/longitude, $delim, $gps/latitude, $delim)"/> <xsl:for-each select="*"> <xsl:value-of select="concat(., $delim)"/> </xsl:for-each> <xsl:value-of select="$nl"/> </xsl:template>

</xsl:stylesheet>

<!-- java com.icl.saxon.StyleSheet -o
C:\bin\merged_lrv_gps_and_trans_tab_delim.xml C:\bin\lrv_trans.xml
C:\bin\merge_lrv_gps_and_trans_to_tab_delim.xsl
{lrv_gps_file=lrv_gps.xml}
-->
 

Ed Beroset

Usenet Archive
Joined
Sep 5, 2002
Messages
46
Reaction score
0
Luke said:
Saxon documenation to find a way to feed a file name param to eliminate the hard-coded file name in the xsl. This version executes but does not appear to do the merge processing and drops the longitude and latitude values.

You're very close. The only problem is that the param is not declared
merge_lrv_gps_and_trans_to_tab_delim.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:eek:utput method="text"/>
<xsl:variable name="delim" select="' '"/> <!-- tab -->

The parameter is being passed to the stylesheet and not to the record template as you had written it.

Ed
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,042
Messages
3,104,223
Members
248,131
Latest member
Tonypshaw1

Latest Threads

Top