Subject: Re: [xsl] Populating keys with values from other documents From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 29 Jun 2010 19:42:02 +0100 |
the code posted appeared to use @xml:id in both documents rather than @ref ???I am trying to look up a value in an XML document (people.xml) based on a @ref attribute in my primary document (source.xml). I know that the @ref values in source.xml will match the @xml:id values in people.xml.
<xsl:template match="name"> <xsl:variable name="uriRef"> <xsl:value-of select="(ancestor::*[@xml:id]/@xml:id)[last()]"/> </xsl:variable>
<xsl:variable name="person" select="document('file:///people.xml')//person[@xml:id=concat($var, '')]"/>
in xslt2 you can write that as <xsl:variable name="person" select="key('p',$var,document('file:///people.xml'))"/>
<xsl:variable name="person" select="key('p',$var)"/> ...
<xsl:if test="$person/residence/country"> <span about="ont:place#{$uriRef}" property="foaf:based_near"> <xsl:value-of select="$person/residence/country"/> </span> </xsl:if> </xsl:template>
But this is incredibly slow for large documents. I have experimented with using xsl:key, but I haven't had much. Essentially I would like to pre-populate the key with the values from people.xml, but I can't quite figure out how to do that in a way that doesn't get me into a looping scenario and/or that allows me to pass my $uriRef value to the template that processes the key. Can anyone explain a better approach?
Thanks, Andy
________________________________________________________________________ This e-mail has been scanned for all viruses by Star. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Populating keys with values f, Ashton, Andrew | Thread | Re: [xsl] Populating keys with valu, Ashton, Andrew |
[xsl] Populating keys with values f, Ashton, Andrew | Date | Re: [xsl] library for parsing RTF, Kevin Grover |
Month |