Subject: RE: [xsl] Root when the current node is part of Parameter Result Tree Fragement/Nodelist From: "Michael Kay" <mhk@xxxxxxxxx> Date: Wed, 10 Mar 2004 10:58:17 -0000 |
Declare a global variable <xsl:variable name="main-doc" select="/"/> And then write the key() call as $main-doc/key('k', $ObjectName/Name) Since this is an XPath 2.0 construct, I'd suggest changing your stylesheet to say version="2.0" so everyone knows it depends on a 2.0 processor. In 1.0, you have to use <xsl:for-each select="$main-doc"> .. key('k', $ObjectName/Name) </xsl:for-each> Michael Kay # -----Original Message----- # From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl- # list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Colin Toal # Sent: 09 March 2004 21:45 # To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx # Subject: [xsl] Root when the current node is part of Parameter Result Tree # Fragement/Nodelist # # Hi all, # # I hope I'm not breaking etiquette, but I could not find an answer to this # in # the FAQ or archives. # # I have an XML source document like this: # # <Objects> # <Object> # <Name>Toothbrush</Name> # <Type>Electric</Type> # <Colour>White</Type> # </Object> # <Object> # <Name>Soap Dish</Name> # <Type>Plastic</Type> # <Colour>Blue</Colour> # <Object> # </Objects> # # I process it with a stylesheet like this: # # <?xml version="1.0" encoding="UTF-8"?> # <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" # version="1.1"> # <xsl:key name="kObject" match="Object" use="Name"/> # <xsl:param name="ObjectName" /> # <xsl:param name="OtherExpr" /> # # <xsl:template match="/Objects"> # <FoundObject> # <xsl:apply-templates select="key('kObject', $ObjectName/Name)"/> # </FoundObject> # </xsl:template> # # <xsl:template match="Object"> # <xsl:copy-of select="."/> # <xsl:apply-templates select="$OtherExpr/ParamColour"/> # </xsl:template> # # <xsl:template match="ParamColour"> # <xsl:if test="current() = key('kObject', $ObjectName/Name)/Colour"> # Is the same colour! # </xsl:if> # </xsl:template> # # I process the XML document with this Stylesheet using SAXON 7.8 in Java, # and # I pass a DOMSource object into each of the parameters that looks like the # following: # # For ObjectName Param # <Name>Toothbrush</Name> # # For Other Expr Param: # <ParamColour>White</ParamColour> # # The problem is that - within the context of the ParamColour matching # template, the key object doesn't seem to be defined - in fact, even root # of # this context node ( i.e. <xsl:copy-of select="//" /> is only the Parameter # contents. This makes me very sad. # # Is there a keyword or expression I can use to get the originally processed # document while I am in the context of a node from an RTREEFRAG or external # parameter nodeset ? # # Thanks in advance for your help, # Colin Toal # # _________________________________________________________________ # MSN Premium with Virus Guard and Firewall* from McAfeeR Security : 2 # months # FREE* # http://join.msn.com/?pgmarket=en- # ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_ # MSNIS_Taglines # # # 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Root when the current nod, Andreas L. Delmelle | Thread | RE: [xsl] Root when the current nod, Colin Toal |
RE: [xsl] Dsiplayig xml in tables, Phillip Nicolson | Date | RE: [xsl] Sequencing, Numbering, an, Michael Kay |
Month |