By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,190 Members | 1,469 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,190 IT Pros & Developers. It's quick & easy.

Pass file name parameter to xsl stylesheet

P: n/a
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:output method="text"/>
<xsl:variable name="delim" select="'&#x9;'"/> <!-- tab -->
<xsl:variable name="nl" select="'&#xA;'"/> <!-- 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}
-->
Jul 20 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Luke Airig wrote:
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
in the right place. If you move it just after the <xsl:stylesheet> tag,
I think it should work just fine:
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:output method="text"/> <xsl:param name="lrv_gps_file"/> <xsl:variable name="delim" select="'&#x9;'"/> <!-- tab -->


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

Ed

Jul 20 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.