This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Problem with XMLDOM and xsl:template macth


<xsl:template> is not allowed inside <xsl:for-each>, in either XSLT or the
IE5 dialect.  I think you want this instead:

<xsl:for-each select="CONFIG[@ID='NewServers' or @ID='GRS1999']">
  <xsl:copy>
    OTHER XSL CODE HERE!!!
  </xsl:copy>
</xsl:for-each>

- Jonathan Marsh
  Microsoft

> -----Original Message-----
> From: Gavin Landon [mailto:gavin@karland.com]
> Sent: Wednesday, May 10, 2000 10:26 AM
> To: XSL-List@mulberrytech.com
> Subject: Problem with XMLDOM and xsl:template macth
> 
> 
> This may be lengthy, but I need you to understand exactly 
> what I'm doing so if there is a better way please let me know...
> I have posted on many NewsGroups and everyone has a different 
> way to do it and none seem to work for me.   The XMLDOM 
> object fails on "strResults = objXMLDoc.transformNode(objXSLDoc)
> ", for each of the examples given to me.  
> 
> I'm using this function on the ServerSide if IIS to create my 
> HTML page:
> ( domain1.asp returns XML and domain2.asp returns XSL )
> ++++++++++++++++++++++++++++++++++++++++++++++++
> sXML = TransformXML("http://www.domain1.com/domain1.asp", 
> "http://www.domain2.com/doamain2.asp")
> 
> function TransformXML(strXMLDoc, strXSLDoc)
> 	'on error resume next
> 	dim objXMLDoc
> 	dim objXSLDoc
> 	dim strResults
> 	
> 	' PROG_ID = "Microsoft.XMLDOM"
> 	PROG_ID = "Microsoft.FreeThreadedXMLDOM"
> 
> 	if err.number = 0 then
> 	'Parse the XML Document
> 	set objXMLDoc = server.CreateObject(PROG_ID)
> 	objXMLDoc.async = false
> 	objXMLDoc.load(strXMLDoc)
> 
> 	if objXMLDoc.parseError.errorCode = 0 then
> 		'Parse the XSL stylesheet
> 		set objXSLDoc = server.CreateObject(PROG_ID)
> 		objXSLDoc.async = false
> 		objXSLDoc.load(strXSLDoc)
> 		if objXSLDoc.parseError.errorCode = 0 then
> 			'If no errors, transform the XML 
> 			'into HTML using the XSL stylesheet
> 		  	strResults = objXMLDoc.transformNode(objXSLDoc)
> 		else
> 			strResults = "The following error " & _
> 		  		"occurred while processing the XSL " & _
> 				"stylesheet: <br>" & _
> 		  		objXSLDoc.parseError.errorCode 
> & ", " & _
> 				objXSLDoc.parseError.reason
> 		end if
> 	else
> 		strResults = "The following error  " & _
> 			"occurred while processing the XML  " & _
> 			"document: <br>" & 
> objXMLDoc.parseError.errorCode & _
> 			", " & objXMLDoc.parseError.reason
> 	end if	
> 	else
> 		strResults = "The following error occurred: <br>" & _
> 			err.number & ", " & err.description
> 	end if
> 	
> 	TransformXML=strResults
> 
> 	'Clean up
> 	set objXSLDoc = nothing
> 	set objXMLDoc = nothing
> end function
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 
> 
> 
> In the XSL I have a snippet of code that looks something like 
> this, which fails:
> ( when removed everything works, but I want to filter all 
> except the match values )
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match="*[@ID='NewServers' or @ID='GRS1999']">
> <xsl:copy>
> 	OTHER XSL CODE HERE!!!
> </xsl:copy>
> </xsl:template>
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 
> 
> I have tried this:
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match="*[@ID='NewServers' | @ID='GRS1999']">
> <xsl:copy>
> 	OTHER XSL CODE HERE!!!
> </xsl:copy>
> </xsl:template>
> ++++++++++++++++++++++++++++++++++++++++++++++++
> And..
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match
> 
> In the XSL I have a snippet of code that looks something like 
> this, which fails:
> ( when removed everything works, but I want to filter all 
> except the match values )
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match="*[@ID='NewServers' or @ID='GRS1999']">
> <xsl:copy>
> 	OTHER XSL CODE HERE!!!
> </xsl:copy>
> </xsl:template>
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 
> 
> I have tried this:
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match="*[@ID='NewServers' | @ID='GRS1999']">
> <xsl:copy>
> 	OTHER XSL CODE HERE!!!
> </xsl:copy>
> </xsl:template>
> ++++++++++++++++++++++++++++++++++++++++++++++++
> And..
> ++++++++++++++++++++++++++++++++++++++++++++++++
> <xsl:for-each select="CONFIG">
> <xsl:template match="@ID='NewServers' or @ID='GRS1999'">
> <xsl:copy>
> 	OTHER XSL CODE HERE!!!
> </xsl:copy>
> </xsl:template>
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 
> 
> I have had no luck making this work..   Can someone tell me a 
> way to make my HTML show ONLY 'NewServers' AND 'GRS1999' on a page?
> 
> Thanx for your time,
> 
> --
> Gavin Landon
> Karland International
> http://www.karland.com/
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]