Subject: RE: [xsl] Using XSLT's key() function while context in secondary document? From: "Scott Trenda" <Scott.Trenda@xxxxxxxx> Date: Tue, 19 Feb 2008 11:13:04 -0600 |
Alternatively, you could do the same with a little less code: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="chnam" match="Chnl" use="@ID" /> <xsl:template match="/"> <Urmel> <xsl:for-each select="key('chnam', document('s.xml')//Channel)"> <p><xsl:value-of select="@ID"/> this works</p> </xsl:for-each> </Urmel> </xsl:template> </xsl:stylesheet> Assuming you're not doing any other processing on the s.xml//Channel nodes, that is. If not, then with the code above, you shouldn't need to change the context document in the first place. ~ Scott -----Original Message----- From: Michael Ludwig [mailto:mlu@xxxxxxxxxxxxx] Sent: Tuesday, February 19, 2008 5:48 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Using XSLT's key() function while context in secondary document? Michael Kay schrieb: >> Is there a way to direct the key() function back to the >> principal document while the context node is located in >> another document? >> > > In XSLT 2.0, use the third argument of key() to tell it which document > to search. In 1.0, you need to change context to that document, which > you can do using xsl:for-each. > > Michael Kay Thanks a lot! So the solution involving the documents given in my original post goes like this: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="principal-doc" select="/"/> <xsl:key name="chnam" match="Chnl" use="@ID"/> <xsl:template match="/"> <Urmel> <xsl:for-each select="document('s.xml')//Channel"> <xsl:variable name="cur" select="."/> <xsl:for-each select="$principal-doc"><!-- change context --> <p><xsl:value-of select="key('chnam', $cur)"/> this works</p> </xsl:for-each> <p><xsl:value-of select="key('chnam', $cur)"/>this doesn't</p> </xsl:for-each> </Urmel> </xsl:template> </xsl:stylesheet> Michael Ludwig
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Using XSLT's key() functi, Michael Ludwig | Thread | Re: [xsl] Using XSLT's key() functi, Andrew Welch |
Re: [xsl] [saxon - Help] SystemID a, Johannes Neubauer | Date | Re: [xsl] [saxon - Help] SystemID a, Johannes Neubauer |
Month |