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:copy> copies the selected <CONFIG> nodes to the output.  If you are
generating HTML this node is probably ignored by the renderrer.

<xsl:copy> is often convenient when the name of the node is unknown.  In
your case it could be easily changed to

  <CONFIG>
    OTHER XSL CODE HERE!!!
  </CONFIG>

But in a case like
  <xsl:for-each select="*">
    <xsl:copy>
      OTHER XSL CODE HERE!!!
    </xsl:copy>
  </xsl:for-each>

You don't know exactly what name to use and thus <xsl:copy> is either
convenient or necessary.  Note that <xsl:copy> works on other node types too
so that identity transformations are possible.

- Jonathan Marsh
  Microsoft

> -----Original Message-----
> From: Gavin Landon [mailto:gavin@karland.com]
> Sent: Wednesday, May 10, 2000 1:41 PM
> To: xsl-list@mulberrytech.com
> Subject: RE: Problem with XMLDOM and xsl:template macth
> 
> 
> OK..  I have downloaded and installed MSXML3 on both my 
> workstation and the web server and I changed the code to what 
> you said.  
> I still get the same error in the same location.
> 
> I then did the :
> <xsl:for-each select="CONFIG[@ID='NewServers' or @ID='GRS1999']">
> 
> and it worked GREAT!!!    THANK YOU VERY MUCH!!!!
> 
> I have one question....
> 
> Why and When should I use <xsl:copy>?   It seems to work with 
> and without it..
> 
> *********** REPLY SEPARATOR  ***********
> 
> On 5/10/00 at 12:09 PM Jonathan Marsh wrote:
> 
> ><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
> 
> 
> 
> --
> 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]