Subject: [xsl] Problems checking if document() exists or using document() pointing to different directory From: "Karen Dunstall" <kdunstall@xxxxxxxxxxxxxxx> Date: Fri, 9 Jan 2004 16:00:01 +1100 |
I have a master file called index.xml as follows: <index> <compound @refid="name1"> <name>a text name</name> </compound> <compound @refid="name2"> <name>another name</name> </compound> </index> @refid refers to a file name, without a path or extension. I also have a whole lot of other xml files in a different directory. e.g. c:\MonthlyDataDump\xml\name1.xml <monthly> <compounddef> <briefdescription>A description of name 1.</briefdescription> <other nodes...> </compounddef> </monthly> My xsl is in a separated directory altogether, along with index.xml. For each <compound> element in index.xml I need to get a description from the associated @refid file in the other directory. I am using the document() command to do this. This works well when I have: a) all xml files and the stylesheet in the same directory, and b) a data dump file for every record in index.xml. Where I have problems is when I use documents in another directory and/or where there are missing referenced files. I keep getting a "system cannot locate the oject specified" error. It works fine if I put a text filenamewith, with path, into the document command. I don't know if I have two errors -- one trying to reference documents in another directory, the other trying to access non-existing files, or just one of these, but the first thing I tried to do is test if the document exists. Unfortunately, I'm not sure how to do this without actually using the document statement itself. My stylesheet is as follows. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="/"> <html> <head> <title>Get descriptions from individual xml files</title> <!-- Use the @refid in index.xml to located file to add a descriptions for each. --> </head> <body> <table> <xsl:apply-templates select="index/compound"/> </table> </body> </html> </xsl:template> <xsl:template match="index/compound"> <xsl:variable name="fName"> <xsl:text>c:\MonthlyDataDump\xml\</xsl:text> <xsl:value-of select="@refid"/> <xsl:text>.xml</xsl:text> </xsl:variable> <tr> <td> <xsl:value-of select="name"/> </td> <td> <xsl:choose> <xsl:when test="..."> <xsl:apply-templates select="document($fName)//briefdescription"/> </xsl:when> <xsl:otherwise> No description. </xsl:otherwise> </xsl:choose> </td> </tr> </xsl:template> <xsl:template match="monthly/compounddef/briefdescription"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> Thanks Karen XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Sorting results by output, Michael Kay | Thread | RE: [xsl] Problems checking if docu, Michael Kay |
[xsl] Sorting results by output of , allan . mccluskey | Date | Re: [xsl] Obtaining a list of uniqu, Vasu Chakkera |
Month |