[xsl] Why can't I use document() inside a template rule to match the te mplate ?

Subject: [xsl] Why can't I use document() inside a template rule to match the te mplate ?
From: Narender S chauhan <nchauhan@xxxxxxxxxxx>
Date: Mon, 17 Nov 2003 18:16:17 +0530
Hi,
 I want to use document function in a template rule like below in which
primary XML and referenced XML through document() function may be entirely
different:

<xsl:template match="/">
	<xsl:apply-template select="document('Tes.xml')" />
</xsl:template>

<xsl:template match="document(Tes.xml)">	// Browser throws error at
this point.
	<span>TEST</span>
</xsl:template>

My question is, why can't I use document function in the template rule or is
there any alternative to such a problem.
A typical example would be as follows:
--->doc1.xml
<books>
	<book>
		<author>Graddy Booch</author>
		<title>UML User Guide</title>
	</book>
	<book>
		<author>Gamma</author>
		<title>Design Patterns</title>
	</book>
</books>

---> doc2.xml
<readers>
	<reader>
		<name>naren</name>
		<occupation>Software Engineer</occupation>
	</reader>
</readers>

---->doc.xsl
<?xml version='1.0' encoding="windows-1252"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="html" />

<xsl:template match="/">
	<html>
		<body>
			<span>
				<xsl:for-each select="books/book/author">
					<xsl:value-of select="." />
					<br />
				</xsl:for-each>
				<xsl:apply-templates
select="document('doc2.xml')" />
			</span>
		</body>
	</html>
</xsl:template>
<xsl:template match="document('doc2.xml')">	// Browser gives an error to
this
	<span>Test</span>
</xsl:template>
</xsl:stylesheet>

Any help would be great.
~Naren

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


Current Thread