如何在XSLT中声明变量?

丁丁81

当我运行以下代码时...

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="images">
<ul id="tiles">
    <xsl:for-each select="entry">
        <li>
            <xsl:if test="position() mod 4 = 0">
                <xsl:attribute name="class">fourth</xsl:attribute>
            </xsl:if>

            <xsl:choose>
                <xsl:when test="datei/meta/@width &gt; datei/meta/@height">         
                    <xsl:variable name="width">600</xsl:variable>
                    <xsl:variable name="height">450</xsl:variable>                              
                </xsl:when>
                <xsl:when test="datei/meta/@width &lt; datei/meta/@height">                                 
                    <xsl:variable name="width">600</xsl:variable>
                    <xsl:variable name="height">800</xsl:variable>                      
                </xsl:when>
                <xsl:otherwise>
                    <xsl:variable name="width">600</xsl:variable>
                    <xsl:variable name="height">600</xsl:variable>  
                </xsl:otherwise>
            </xsl:choose>   

            <a href="{$root}/image/2/{$width}/{$height}/5{datei/@path}/{datei/filename}" class="fresco" data-fresco-caption="{titel}" data-fresco-group="event">
                <img src="{$root}/image/2/320/320/5{datei/@path}/{datei/filename}"/>
            </a>
        </li>
    </xsl:for-each>
</ul>
</xsl:template>

</xsl:stylesheet>

我收到一个错误:

XSLTProcessor::transformToXml():
Variable 'width' has not been declared.
xmlXPathCompiledEval: evaluation failed
Variable 'height' has not been declared.
xmlXPathCompiledEval: evaluation failed

这怎么可能?

难道我声明变量width,并height在一个错误的方式?

谢谢你的帮助。

迈克尔·凯

有时,我有时更喜欢使用模板规则:

<xsl:variable name="width">
  <xsl:apply-templates select="datei/meta/@width" mode="width"/>
</xsl:variable>

<xsl:template match="@width[. &gt; ../@height]" mode="width">600</xsl:template>
<xsl:template match="@width[. &lt; ../@height]" mode="width">600</xsl:template>
<xsl:template match="@width" mode="width">600</xsl:template>

等等。

模板规则是XSLT使用最多的部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Netezza中声明变量?

来自分类Dev

如何在PIG中显示声明的变量

来自分类Dev

如何在yacc中声明“结构”变量

来自分类Dev

如何在if条件中声明变量?

来自分类Dev

如何在SELECT中声明变量?

来自分类Dev

如何在python中声明变量?

来自分类Dev

如何在Scala中声明变量

来自分类Dev

如何在PIG中显示声明的变量

来自分类Dev

如何在bash -c中声明变量

来自分类Dev

如何在if条件中声明变量?

来自分类Dev

如何在 postgresql 中声明变量 INTERVAL?

来自分类Dev

如何在惰性变量声明Swift中访问实例变量

来自分类Dev

如何在与声明变量不同的文件中编辑变量?

来自分类Dev

如何在mysql中声明变量以及如何创建CURSOR

来自分类Dev

如何在PHP函数中的查询中声明变量

来自分类Dev

如何在python中声明要在子类中实现的变量?

来自分类Dev

如何在PHPDoc中记录多个变量声明

来自分类Dev

如何在汇编中声明字符串变量?

来自分类Dev

如何在Fortran中声明变量中间例程

来自分类Dev

如何在Typescript中的函数内部声明静态变量?

来自分类Dev

如何在PostgreSQL中声明变量并为其赋值?

来自分类Dev

如何在Theos中声明子类的成员变量

来自分类Dev

如何在Visual Basic中声明全局变量?

来自分类Dev

如何在Liquid模板中声明换行符变量?

来自分类Dev

这个变量声明如何在python中工作?

来自分类Dev

如何在C#中声明SQL变量

来自分类Dev

如何在抽象类中声明List变量

来自分类Dev

如何在C中声明全局变量?

来自分类Dev

如何在SWIG中访问声明的模板结构变量?