Hallo,
ich erzeuge durch eine rekursive Schleife verschiedene Rechtecke mit verschiedenen Texten. Das Problem ist, dass der erzeugte svg-Code immer die selbe id besitzt, was ja unzulässig ist. Gibt es die Möglichkeit, die id dynamisch mit xsl zu verändern?
ich erzeuge durch eine rekursive Schleife verschiedene Rechtecke mit verschiedenen Texten. Das Problem ist, dass der erzeugte svg-Code immer die selbe id besitzt, was ja unzulässig ist. Gibt es die Möglichkeit, die id dynamisch mit xsl zu verändern?
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/2000/svg">
<xsl:output
method="xml" doctype-public="-//W3C//DTD SVG 1.0//EN" doctype-system="http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
encoding="ISO-8859-1"
media-type="image/svg+xml"
version="1.0"
indent="yes"/>
<xsl:template match="/">
<xsl:processing-instruction
name="xml-stylesheet">href="EB.css" type="text/css"
</xsl:processing-instruction>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="600" viewBox="0 0 1000 650">
<xsl:call-template name="fori">
<xsl:with-param name="myCounter" select="0"/>
</xsl:call-template>
</svg>
</xsl:template>
<xsl:template name="fori">
<xsl:param name="myCounter"/>
<!-- hochzaehlen für naechsten durchlauf -->
<xsl:variable name="mbCounter" select="$myCounter + 1"/>
<!-- ausgabe -->
<xsl:for-each select="ODX/VEHICLE-INFO-SPEC/VEHICLE-INFORMATIONS/VEHICLE-INFORMATION/LOGICAL-LINKS">
<xsl:choose>
<xsl:when test="LOGICAL-LINK[position()=$mbCounter]/LONG-NAME[contains(.,'Logical Link')] and LOGICAL-LINK[position()=$mbCounter]/LONG-NAME[contains(.,'KWP2000CAN20')]">
<xsl:variable name="fulltext" select="LOGICAL-LINK[position()=$mbCounter]/LONG-NAME"/>
<xsl:variable name="ohneLL" select="substring-after($fulltext,'Logical Link')"/>
<xsl:variable name="ohneKWP" select="substring-before($ohneLL,'KWP2000CAN20')"/>
<xsl:variable name="eins" select="substring($ohneKWP,1,11)"/>
<xsl:variable name="zwei" select="substring($ohneKWP, 12,11)"/>
<xsl:variable name="drei" select="substring($ohneKWP, 23)"/>
<g id="bla" class="bla" transform="translate(29 162)">
<g id="bla.graphics">
<rect x="0" y="0" width="80" height="60"/>
<line x1="0" y1="60" x2="80" y2="0"/>
</g>
<g id="bla.name">
<text id="bla.Gateway.name.3" x="0" y="0" pointer-events="none" visibility="visible" transform="translate(40 19)">
<tspan x="0" dy="0" text-anchor="middle"><xsl:value-of select="$eins"/></tspan>
<tspan x="0" dy="15" text-anchor="middle"><xsl:value-of select="$zwei"/></tspan>
<tspan x="0" dy="15" text-anchor="middle"><xsl:value-of select="$drei"/></tspan>
</text>
</g>
</g>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:if test="$mbCounter < 50"><!-- bis 50-->
<!-- naechster(leider rekursiver) aufruf mit $myCounter+1 -->
<xsl:call-template name="fori">
<xsl:with-param name="myCounter" select="$mbCounter"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Comment