2017-01-27 2 views
0

Die folgende Vorlage das img/src Attribut fixiert und ist dort seit Jahren:Zweite XSL-Vorlage deaktiviert die erste

<xsl:template match="xh:img/@src"> 
    <xsl:attribute name="src"> 
     <xsl:value-of select=" 
      if(string-length(substring-before(substring-after(
       subsequence(parent::node()/following-sibling::comment(),1,1),'src=&quot;'),'.eps')) > 0) 
      then 
       concat('images/',tokenize(concat(substring-before(substring-after(
        subsequence(parent::node()/following-sibling::comment(),1,1),'src=&quot;'),'.eps'),'.png'),'/')[last()]) 
      else 
       data(self::node())"/> 
    </xsl:attribute> 
</xsl:template> 

Jetzt habe ich die folgende Vorlage hinzugefügt width zu bewegen und height zu style:

<xsl:template match="xh:img"> 
    <img style="width:{@width}; height:{@height};"> 
     <xsl:copy-of select="@*[not(name()='width' or name()='height')]"/> 
    </img> 
</xsl:template> 

Die zweite funktioniert, aber sie "deaktiviert" die erste. Wenn ich den zweiten Kommentar mache, funktioniert der erste. Gibt es eine Möglichkeit, sie zusammenzuführen?

Ich habe wirklich keine Erfahrung mit XSL, so würde jede Hilfe geschätzt werden.

Antwort

2

Dies liegt daran, dass Sie xsl:copy-of verwenden, um Attribute in der Vorlage zu kopieren, die mit xh:img übereinstimmen. Dadurch werden keine übereinstimmenden Vorlagen angewendet, sondern nur genau kopiert.

einfach ändern xsl:apply-templates mit ...

<xsl:apply-templates select="@*[not(name()='width' or name()='height')]"/> 

jedoch Sie passen andere Attribute als Möglicherweise müssen Sie eine zusätzliche Vorlage hinzufügen src sollten Sie sie wollen immer noch zu erstellt werden.

<xsl:template match="@*"> 
    <xsl:copy /> 
</xsl:template> 
+0

Es war so einfach? Ich habe versucht, sie zusammenzuführen ... Danke, es funktioniert perfekt! – marco

Verwandte Themen