2017-02-09 7 views
0

Я пытаюсь сохранить ширину изображения как число, чтобы добавить значение класса в оболочку фигур, чтобы я мог управлять размещением изображения с помощью css (маленькое, среднее или большое изображение).Как сохранить ширину изображения как число в переменной с xsl

Это мой XML пример:

<?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> 

Это мой 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> 

Переменная "IMG-ширина" вызывает зависание. У меня явно что-то не так. Как я могу сохранить ширину изображения как числовую переменную, чтобы мой тест работал? Любая помощь приветствуется. Спасибо, Джон

ответ

0

Вы должны изменить

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

в

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

потому, что вы храните в переменной "ширина изображения" не "изображение"

 Смежные вопросы

  • Нет связанных вопросов^_^