|
Subject: [xsl] Populating keys with values from other documents From: "Ashton, Andrew" <andrew_ashton@xxxxxxxxx> Date: Tue, 29 Jun 2010 14:31:00 -0400 |
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. I can do something like this:
<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,
'')]"/>
<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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Decode Base64 data and na, Michael Kay | Thread | Re: [xsl] Populating keys with valu, David Carlisle |
| Re: [xsl] Decode Base64 data and na, Michael Kay | Date | Re: [xsl] Populating keys with valu, David Carlisle |
| Month |