xsl-list
[Top] [All Lists]

RE: handling failed document() invocations

2002-10-29 16:35:57
Hi,

Since you are using saxon you can simply do something like:

<xsl:choose>
  <xsl:when test="boolean($item-doc")">
    <xsl:apply-templates select="$item-doc"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:call-template name="content_not_found"/>
  </xsl:otherwise>
</xsl:choose>

If you want this to be non-(java)-processor-specific you might want to use a(n?)
URIResolver to return some well-formed error info.

best,
-Rob




-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of 
Jeff Barrett
Sent: Tuesday, October 29, 2002 3:06 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] handling failed document() invocations


I have a main XML document that has references to other XML document
instances.  These references take the form of an ID number that is
used to construct the path to an instance doc.  For example:

<document>
      <item id="14" />
      <item id="94" />
</document>
<!----------------------------->
<xsl:stylesheet>
[...]
<xsl:variable name="instance-id" select="document/item/@id" />
<xsl:variable name="item-doc" select="document(
'documents/$instance-id/item.xml' )" />
[...]
</xsl:stylesheet>

The problem is there may not be a document there, which is an OK
state of affairs.  What is the xsl code idiom for detecting when
document() is unable to find a document at the given location, and to
handle this in a more meaningful way than exiting on error?

If it matters I'm using saxon 6.5.2.

thanks,
+jeff

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list