如何减去XSLT中的值



您能告诉我如何使用变量在XSLT中减去值?

这是我的代码:

<xsl:variable name="currentCurpg" select="1"/>
<xsl:variable name="tCurpg" select="($currentCurpg-1)"/>

变量tCurpg应为zero0

为什么我会出错?

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
    <xsl:template match="/">
      <hmtl>
        <head>
          <title>New Version!</title>
        </head>
         <xsl:variable name="currentCurpg" select="1"/>
          <xsl:variable name="tCurpg" select="($currentCurpg-1)"/>
     <xsl:value-of select="$tCurpg"/>
      </hmtl>
    </xsl:template>

</xsl:transform>

我期望输出zero

问题是连字符在变量名称中有效,因此当您执行此操作时...

<xsl:variable name="tCurpg" select="($currentCurpg-1)"/>

实际上是在寻找一个名为 currentCurpg-1的变量。

而是将其更改为...

<xsl:variable name="tCurpg" select="$currentCurpg - 1"/>

查看您的代码,仅在HTML中的XSLT语句中不需要围绕变量的卷曲{}

eg div title="{$currentCurpg}">

所以在您的代码中您需要

<xsl:for-each select="ul/li[position() &gt;= (last()-$currentCurpg) and position() &lt;= last()-1]">

更新根据您的更新代码,您需要删除()并在变量和-1之间放置空格,如

 <xsl:variable name="tCurpg" select="$currentCurpg - 1"/>

您的select属性值ul/li[position() &gt;= last()-{$currentCurpg} and position() &lt;= last()-1]无效。在XSLT属性中,您可以直接使用XSLT变量,因此不应存在卷曲括号。换句话说,使用ul/li[position() &gt;= last()-$currentCurpg and position() &lt;= last()-1]

另外,在<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />中,doctype-public的正确值是about:legacy-compat;参见HTML§12.1.1:Doctype。

和声明omit-xml-declaration="yes"对于HTML来说毫无意义,因为使用method="html"生成的HTML不是XML,因此永远不会有XML声明。

编辑:OP显然最初链接到错误的代码,该代码也有错误。

相关内容

  • 没有找到相关文章

最新更新