Fipps: Attribute nach Klasse

Hallo,

ich habe eine SVG-Datei in welcher ich ziemlich viele Objekte mit verschieden class-Attributen (Klasse) habe. Ich möchte mit XSL das r-Attribut (für den Radius eines Kreises) je nach Klasse setzen lasse.

Also aus etwas wie demhier:

<circle class="rzehn" transform="scale(1)" cx="0" cy="0" r="26.38" fill="yellow"/>

soll soetwas

<circle class="rzehn" transform="scale(1)" cx="0" cy="0" r="10" fill="yellow"/>

werden und zwar rekursiv für alle "zehn"-Kassen. Ich habe es schon auf verschiedenste Arten probiert, aber irgendie kommt nie etwas brauchbares raus.

  1. Hallo Fipps,

    <circle class="rzehn" transform="scale(1)" cx="0" cy="0" r="26.38" fill="yellow"/>

    soll soetwas

    <circle class="rzehn" transform="scale(1)" cx="0" cy="0" r="10" fill="yellow"/>

    werden und zwar rekursiv für alle "zehn"-Kassen.

    Ansatz mittels Identitätsverarbeitung aller Inhalte und spezieller Reaktion auf die r-Attribute im Kontext der entsprechenden Klasse:

    <xsl:template match="@* | node()">  
      <xsl:copy>  
        <xsl:apply-templates select="@* | node()"/>  
      </xsl:copy>  
    </xsl:template>  
      
    <xsl:template match="@r">  
      <xsl:if test="../@class='rzehn'">  
        <xsl:attribute name="r">10</xsl:attribute>  
      </xsl:if>  
    </xsl:template>
    

    Grüße,
    Thomas