Mercurial > hg > ooxml
comparison refs2.xsl @ 41:afda541de4c4
working again with new refs
author | Henry S. Thompson <ht@markup.co.uk> |
---|---|
date | Tue, 02 May 2017 10:00:02 +0100 |
parents | ac6d1ca099f7 |
children | 6f448ac67778 |
comparison
equal
deleted
inserted
replaced
40:ac6d1ca099f7 | 41:afda541de4c4 |
---|---|
1 <?xml version='1.0'?> | 1 <?xml version='1.0'?> |
2 <!DOCTYPE doc SYSTEM "../../../lib/xml/xsl.dtd" > | 2 <!DOCTYPE doc SYSTEM "../../../lib/xml/xsl.dtd" > |
3 <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"> | 3 <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"> |
4 <!-- Invert the singleton references extracted from formulae by refs.xsl | 4 <!-- Invert the singleton references extracted from formulae by refs.xsl |
5 Input e:refs/e:ref/e:s e:ref[@r] contains one or more e:s or e:r | 5 Input e:refs/e:ref/(e:s|e:r) e:ref[@r] contains one or more e:s or e:r |
6 for each singleton/range reference | 6 for each singleton/range reference |
7 to e:s/@r in @r's formula | 7 to [e:r/]e:s/@r in @r's formula |
8 Output e:refs/e:i/e:r e:i[@r] contains one e:r for each cell which | 8 Output e:refs/e:i/e:r e:i[@r] contains one e:r for each cell which |
9 references r --> | 9 references r --> |
10 | 10 |
11 <xsl:include href="n2a.xsl"/> | 11 <xsl:include href="n2a.xsl"/> |
12 <xsl:include href="a2n.xsl"/> | 12 <xsl:include href="a2n.xsl"/> |
13 | 13 |
14 <xsl:key name="ref" match="e:ref" use="for $s in e:s return translate($s/@r,'$','')"/> | 14 <xsl:key name="ref" match="e:ref[e:s]" use="for $s in e:s return translate($s/@r,'$','')"/> |
15 <xsl:key name="rrefTL" match="e:ref[e:r]" use="for $s in e:r/(e:s[1]) return translate($s/@r,'$','')"/> | |
16 <xsl:key name="rrefBR" match="e:ref[e:r]" use="for $s in e:r/(e:s[2]) return translate($s/@r,'$','')"/> | |
15 | 17 |
16 <xsl:template match="e:refs"> | 18 <xsl:template match="e:refs"> |
19 <xsl:message><xsl:value-of select="count(e:ref/e:r)"/>|<xsl:value-of select="count(e:ref/e:r/(e:s[1]))"/>|<xsl:value-of select="distinct-values(count(e:ref/e:r/(e:s[1])))"/></xsl:message> | |
17 <xsl:variable name="refs" select="."/> | 20 <xsl:variable name="refs" select="."/> |
18 <xsl:variable name="invert"> | 21 <xsl:variable name="invert"> |
19 <xsl:for-each select="distinct-values( | 22 <xsl:for-each select="distinct-values( |
20 for $s in e:ref/e:s return translate($s/@r,'$',''))"> | 23 for $s in e:ref//e:s return translate($s/@r,'$',''))"> |
21 <xsl:variable name="r" select="."/> | 24 <xsl:variable name="r" select="."/> |
22 <i r="{$r}"> | 25 <i r="{$r}"> |
23 <xsl:for-each select="key('ref',$r,$refs)"> | 26 <xsl:for-each select="key('ref',$r,$refs)"> |
24 <r><xsl:value-of select="@c"/></r> | 27 <r><xsl:value-of select="@r"/></r> |
28 </xsl:for-each> | |
29 <xsl:for-each select="key('rrefTL',$r,$refs)"> | |
30 <r><<xsl:value-of select="@r"/></r> | |
31 </xsl:for-each> | |
32 <xsl:for-each select="key('rrefBR',$r,$refs)"> | |
33 <r><xsl:value-of select="@r"/>></r> | |
25 </xsl:for-each> | 34 </xsl:for-each> |
26 </i> | 35 </i> |
27 </xsl:for-each> | 36 </xsl:for-each> |
28 </xsl:variable> | 37 </xsl:variable> |
29 <xsl:copy> | 38 <xsl:copy> |