Mercurial > hg > ooxml
view refs2.xsl @ 38:468a6cf8bf0b
big change wrt formulae compiles, crashes
author | Henry S. Thompson <ht@markup.co.uk> |
---|---|
date | Tue, 25 Apr 2017 22:17:12 +0100 |
parents | ae605b77d1e4 |
children | ac6d1ca099f7 |
line wrap: on
line source
<?xml version='1.0'?> <!DOCTYPE doc SYSTEM "../../../lib/xml/xsl.dtd" > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:e="http://markup.co.uk/excel" exclude-result-prefixes="xs e" xmlns="http://markup.co.uk/excel"> <!-- Invert the singleton references extracted from formulae by refs.xsl Input e:refs/e:ref/e:s e:ref[@c] contains one or more e:s for each singleton reference to e:s/@r in c's formula Output e:refs/e:i/e:r e:i[@r] contains one e:r for each cell which references r --> <xsl:include href="n2a.xsl"/> <xsl:include href="a2n.xsl"/> <xsl:key name="ref" match="e:ref" use="for $s in e:s return translate($s/@r,'$','')"/> <xsl:template match="e:refs"> <xsl:variable name="refs" select="."/> <xsl:variable name="invert"> <xsl:for-each select="distinct-values( for $s in e:ref/e:s return translate($s/@r,'$',''))"> <xsl:variable name="r" select="."/> <i r="{$r}"> <xsl:for-each select="key('ref',$r,$refs)"> <r><xsl:value-of select="@c"/></r> </xsl:for-each> </i> </xsl:for-each> </xsl:variable> <xsl:copy> <xsl:copy-of select="$invert"/> </xsl:copy> </xsl:template> </xsl:stylesheet>