Re: [xsl] using a parameter to modify part of the file path in document(...) function

Subject: Re: [xsl] using a parameter to modify part of the file path in document(...) function
From: "Tracey Zellmann" <tracey.zellmann@xxxxxxxxxxx>
Date: Sun, 17 Sep 2006 15:12:23 -0400
I was able to resolve this.

I needed to include in my stylesheet
<xsl:param name="buidlingDataFile"/>

Not exactly sure why I need this in this case, but not in others.

----- Original Message ----- From: "Tracey Zellmann" <tracey.zellmann@xxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Sunday, September 17, 2006 2:57 PM
Subject: Re: [xsl] using a parameter to modify part of the file path in document(...) function



Thanks.

However, I can not quite get it to work. I must be doing something wrong.

I have this in my transformer set-up:
transformer.setParameter("buildingDataFile", this.buildingDataName);
where this.buidingDataName is "TownHouseData"

Then, in my style sheet I have, as you suggested,
<xsl:variable name="list" select="document(concat('../', $buildingDataFile, '/inputXML/storyPages.xml'))"/>


However, I get this error message, stating that the variable, $buildingDataFile has not been declared.

Error at xsl:variable on line 15 of file:///C:/Documents%20and%20Settings/Tracey/workspace/LibraryProject/xslt/stories.xsl:
XPST0008: XPath syntax error at char 40 on line 15 in {...le, '/inputXML/storyPages.x...}:
Variable $buildingDataFile has not been declared


In other cases, I have been able to make use of transformer parameters into the html part of astylesheet with something like this:
<li><a href="../index.html" title="{$buildingTitle}"> , where buildingTitle was a transformer parameter,
but, as I said before, whenever I try to get a parameter into a quoted function, I get into trouble.


What am I missing?

There is a more going on in the stylesheet, but nothing really before this line, so I haven't included it.

----- Original Message ----- From: "Michael Kay" <mike@xxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Sunday, September 17, 2006 3:23 AM
Subject: RE: [xsl] using a parameter to modify part of the file path in document(...) function



Change your call on document() to

document(concat('../', $buildingDataFile, '/inputXML/buildingStories.xml'))

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Tracey Zellmann [mailto:tracey.zellmann@xxxxxxxxxxx]
Sent: 16 September 2006 20:09
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] using a parameter to modify part of the
file path in document(...) function

I am using XSLT 2.0 and JAVA 1.5.0_07 and the Saxon B
net.sf.saxon.TransformerFactoryImpl Transformer.

In my style sheet, I currently import an xml document
<xsl:variable name="list"
select="document('../inputXml/storyPages.xml')"/>

Now that everything works, I want to change my input file
arrangements and use different documents, each named
storyPages.xml, but from different directories.

examples:

../TownHouseData/inputXML/buildingStories.xml
../MiddlesexHotelData/inputXML/buildingStories.xml
../DamonMillData/inputXML/buildingStories.xml

and so forth.

I can set a parameter in my java program,
transformer.setParameter("buildingDataFile", "TownHouseData");

and use a different setting for the other buildings.

My problem is that I always get confused in XSLT using
variables and parameters inside double and single quoted strings.

What is a clean syntax for accomplishing this?

Current Thread