RE: [xsl] Problem using document function in a template rule while combining two XML files?

Subject: RE: [xsl] Problem using document function in a template rule while combining two XML files?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 31 Oct 2003 10:54:14 -0000
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@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Narender S chauhan
> Sent: 31 October 2003 04:07
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> 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" />&#160;
> 				<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


Current Thread