2017-02-09 6 views
0

speichern Ich versuche, eine Bildbreite als eine Zahl zu speichern, so dass ich einen Klassenwert zum Figurenwrapper hinzufügen kann, so kann ich die Bildplatzierung mit CSS steuern, (kleines, mittleres oder großes Bild).Wie Bildbreite als eine Zahl in einer Variablen mit xsl

Das ist mein xml Beispiel:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <section> 
     <figure class="informalfigure"> 
      <img src="../images/image-fpo-1.png" alt="" width="250" height="800"/> 
     </figure> 
     <figure class="informalfigure"> 
      <img src="../images/image-fpo-2.png" alt="" width="650" height="800"/> 
     </figure> 
     <figure class="informalfigure"> 
      <img src="../images/image-fpo-3.png" alt="" width="1250" height="800"/> 
     </figure> 
    </section> 
</root> 

Das ist mein Xslt:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> 

<xsl:variable name="small-image"> 
    <xsl:number value="200"/> 
</xsl:variable> 
<xsl:variable name="medium-image"> 
    <xsl:number value="500"/> 
</xsl:variable> 
<xsl:variable name="large-image"> 
    <xsl:number value="1000"/> 
</xsl:variable> 

<xsl:template match="node()"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="figure"> 
    <xsl:variable name="classvalue" select="@class"/> 
    <xsl:variable name="img-width" select="number(img[@width])"/> 

    <xsl:choose> 
     <xsl:when test="number($img-width) > number($large-image)"> 
      <figure class="{$classvalue} large"> 
       <xsl:apply-templates/> 
      </figure> 
     </xsl:when> 
     <xsl:when test="number($img-width) > number($medium-image)"> 
      <figure class="{$classvalue} medium"> 
       <xsl:apply-templates/> 
      </figure> 
     </xsl:when> 
     <xsl:when test="number($img-width) > number($small-image)"> 
      <figure class="{$classvalue} small"> 
       <xsl:apply-templates/> 
      </figure> 
     </xsl:when> 
     <xsl:otherwise> 
      <figure class="{$classvalue} missedit" width="{$img-width}"> 
       <xsl:apply-templates/> 
      </figure> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

Die Variable "img-Breite", um den Auflege verursacht. Ich habe da eindeutig etwas nicht in Ordnung. Wie würde ich die Bildbreite als Zahlenvariable speichern, damit mein Test funktioniert? Jede Hilfe wird sehr geschätzt. Danke, Jon

Antwort

0

Sie müssen

ändern
<xsl:variable name="img-width" select="number(img[@width])"/> 

zu

<xsl:variable name="img-width" select="number(img/@width)"/> 

weil Sie speichern in Variable "Bildbreite" nicht "Bilddaten"

Verwandte Themen