Re: [xsl] What is the best approach for doing.....

Subject: Re: [xsl] What is the best approach for doing.....
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 12 May 2004 10:07:28 +0100
  I suppose what I want to know is once the XSLT has been transformed into 
  XHTML and then edited by a user, is there any way to use XSL to parse the 
  XHTML to check/update the references.

yes but in that case, how the xhtml was generated (by xslt in your case)
is irrelevant. You just need to write an xslt file that takes an xhtml
document and does an identity transform except for checking cross refs.

Specifically

a: the usual identity transform

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0"
                xmlns:h="http://www.w3.org/1999/xhtml";
                xmlns="http://www.w3.org/1999/xhtml";
>

<xsl:template match="*">
 <xsl:copy>
 <xsl:copy-of select="@*"/>
 <xsl:apply-templates>
 </xsl:copy>
 </xsl:template>


plus one template to fix up cross refs.
Assume here thet paragraphs all have the following form

<p id="foo"><span>3.iii.a</span>Once upon a time...

and an xref to this looks like 
<a href="#foo>3.iii.a</a>

so all you have to do is replace the content of any internal a href by
the first span child of the id'd para.

<xsl:template match="h:a[starts-with(@href,'#')]">
 <a href="{@href}><xsl:value-of select="id(@href)/span[1]"/></a>
</xsl:template>


and you are done
<xsl:stylesheet>

David

-- 
The LaTeX Companion
  http://www.awprofessional.com/bookstore/product.asp?isbn=0201362996
  http://www.amazon.co.uk/exec/obidos/tg/detail/-/0201362996/202-7257897-0619804


________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread