globale variable
josef stebegg
- xsl
Hallo!
Trotz einiger Unterlagen verstehe ich das mit den globalen Variablen nicht.
Das folgende (hier vereinfachte) xsl erzeugt "Lebenslinien"
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><head>
<link rel="stylesheet" type="text/css" href="personen.css"/>
</head>
<body>
<xsl:apply-templates />
</body></html>
</xsl:template>
<xsl:template match="paar">
<div>
<!-- Mann -->
<xsl:for-each select="mann">
<xsl:variable name="geburt">left:<xsl:value-of select="@geburt *3-4428"/>px</xsl:variable>
<xsl:variable name="alter">width:<xsl:value-of select="(@tod - @geburt)*3"/>px</xsl:variable>
<div style="position:absolute; {$geburt}; {$alter};" class="linie1m"></div>
</xsl:for-each>
<!-- frau -->
<xsl:for-each select="frau">
<xsl:variable name="geburt">left:<xsl:value-of select="@geburt*3-4428" />px</xsl:variable>
<xsl:variable name="alter">width:<xsl:value-of select="(@tod - @geburt)*3" />px</xsl:variable>
<xsl:variable name="farbe">background:#xsl:choose
<xsl:when test="../mann/@haus='spanien'">666</xsl:when>
<xsl:when test="../mann/@haus='portugal'">669</xsl:when>
xsl:otherwise<xsl:value-of select="../mann/@farbe"/></xsl:otherwise></xsl:choose></xsl:variable>
<div style="position:absolute; {$geburt}; {$alter}; {$farben};" class="linie1f"></div>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
Wenn ich nun die zwei Mal vorkommenden Variablen als Top-Level-Elemente setzte:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="geburt">left:<xsl:value-of select="@geburt *3-4428"/>px</xsl:variable>
<xsl:variable name="alter">width:<xsl:value-of select="(@tod - @geburt)*3"/>px</xsl:variable>
<xsl:template match="/">
.....
Ist das so ueberhaupt moeglich?
Und wie geht dann bitte der Aufruf zwischen "for-each"
(geburt und tod sind attribute von mann bzw frau, die wiederum direkte kinder von paar sind)
gruesse
josef