This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Problem with XMLDOM and xsl:template macth
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: Problem with XMLDOM and xsl:template macth
- From: Jonathan Marsh <jmarsh at microsoft dot com>
- Date: Wed, 10 May 2000 14:16:30 -0700
- Reply-To: xsl-list at mulberrytech dot com
<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