Hallo Holge r,
Hallo,
ich habe da ein leidiges Problem, was ich schon immer mal in Angriff nehmen wollte. Ziel soll es sein, ein xsl:function zu erstellen, die eine Nummer in eine Spreadsheet Letter Code umwandelt, Also ganz einfach 1 = A, 5 = E; 27 = AA usw.
...
Nur weiss ich nicht so recht wie ich da am besten herangehe unter xslt2.0.
Hier mal ein Versuch:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:my="http://example.org/my">
<!-- globale Variable -->
<xsl:variable name="abisz" select="('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z')"/>
<!-- Testaufrufe -->
<xsl:template match="/">
<xsl:value-of select="my:xyz(5)"/><!-- E -->
<xsl:text> | </xsl:text>
<xsl:value-of select="my:xyz(27)"/><!-- E -->
<xsl:text> | </xsl:text>
<xsl:value-of select="my:xyz(54)"/><!-- AAB -->
</xsl:template>
<!-- die eigentliche Funktion -->
<xsl:function name="my:xyz">
<xsl:param name="z"/>
<xsl:variable name="x" select="$z div 26"/>
<xsl:value-of select="if($x le 1) then $abisz[$z] else $abisz[1]"/>
<xsl:value-of select="if($x gt 1) then my:xyz($z - 26) else()"/>
</xsl:function>
</xsl:stylesheet>
Grüße,
Thomas