[xsl] efficiency with id()

Subject: [xsl] efficiency with id()
From: James Cummings <James.Cummings@xxxxxxxxx>
Date: Thu, 3 Jul 2003 10:41:03 +0100 (BST)
 Ok, let's say you have a file of:
-----
 <?xml version="1.0"?>
 <foo>
 <bar>
 <blort>
 <p id="c1001"><body wit="A B C">This is a
              <app><rdg wit="A B">test</rdg><rdg wit="C">really big test</rdg></app>
              but only a test!</body></p>
 <p id="c1002"><body wit="A B C">This is a
              <app><rdg wit="A B">test</rdg><rdg wit="C">really big test</rdg></app>
              but only a test!</body></p>
 <p id="c1003"><body wit="A B C">This is a
              <app><rdg wit="A B">test</rdg><rdg wit="C">really big <add> place="supra">test</add></rdg></app>
              but only a test!</body></p>
 ...
 <p id="c9205"><body wit="A B C">This is a
              <app><rdg wit="A B">test</rdg><rdg wit="C">really <gap/>test</rdg></app>
              but only a test!</body></p>
 </blort>
 </bar>
 </foo>
-----

What is the most efficient/quickest way of grabing a copy-of a particular <p> (and
children) by its @id?


Is it best to do something like:
-----
<xsl:template match="/">
  <xsl:copy-of select="id($id)"/>
</xsl:template

<!-- and another empty template matching anything you don't want to display -->
-----

or is there a quicker way? Is key() quicker?  The @id is in reality declared as
type ID, so seems reasonable to use that.  (This is for a quite large (well 2.5meg), file,
which admittedly would probably be better just burst out into seperate files
for each <p> element in this example.)  Any suggestions appreciated.

-James

---
Dr James Cummings, James.Cummings@xxxxxxxxx, http://www.uea.ac.uk/~q503
Cursus Project, School of Music, University of East Anglia,
Norwich, Norfolk, NR4 7TJ, UK  Tel:(01603)593-595



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread