You can write
match="qualification"
since there is only one context in which qualification elements appear
in your input.
If both your source documents had the same structure, and you really
needed to write a template rule that matched qualification elements in
one document and not the other, you could do it as:
match="qualification[count((/)|document('doc1.xml'))=0]"
but it's not something I have ever needed to do, and would probably be
rather expensive.
Michael Kay
-----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
Narender S chauhan
Sent: 31 October 2003 04:07
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Cc: Narender S chauhan
Subject: [xsl] Problem using document function in a template
rule while combining two XML files?
Hi,
I wanted to make a template rule corresponding to
apply-templates which makes use of document() function. When
I try to apply this style sheet on the XML, browser throws an
error. Am I doing somethin wrong or ... ? Is there any other
method to achieve the same ? Sample code is:
(Test1.xml)
<?xml-stylesheet type="text/xsl" href="Test.xsl"?>
<students>
<student>
<name>Naren</name>
<age>28</age>
</student>
<student>
<name>Vineet</name>
<age>25</age>
</student>
</students>
(Test2.xml)
<students>
<student>
<qualification>Graduate</qualification>
</student>
<student>
<qualification>Post Graduate</qualification>
</student>
</students>
(Test.xsl)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" />
<xsl:variable name="DOC2"
select="document(Test2.xml)" />
<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head>
<body>
<xsl:apply-templates
select="students" />
</body>
</html>
</xsl:template>
<xsl:template match="students">
<xsl:for-each select="student">
<xsl:value-of select="name" /> 
<xsl:value-of select="age" /><br/>
<xsl:apply-templates
select="$DOC2/students/student/qualification" />
</xsl:for-each>
</xsl:template>
<!-- MSXML throws error at following point that it
does not allow variables at this position.
Even if I make use of document function
directly instead of taking a variable, it still throws an error.
-->
<xsl:template
match="$DOC2/students/student/qualification">
<span>NAREN</span>
</xsl:template>
</xsl:stylesheet>
Any help would be great!
~Naren
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list