首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT中输入字符串的格式不正确

XSLT中输入字符串的格式不正确
EN

Stack Overflow用户
提问于 2015-08-18 18:13:44
回答 1查看 461关注 0票数 0

我收到错误消息“服务器错误在'/‘应用程序中。输入字符串的格式不正确。”从插入了下面XSLT的Umbraco中查看页面时。

我认为这是由于试图将此XSLT文件中的字符串转换为数字而导致的。可能来自这一行:

代码语言:javascript
复制
<xsl:if test="string-length($rteLinkText) != 0 and string($rteLink) = number($rteLink)">

如果我从页面中删除XSLT,它可以很好地呈现。

我只想向任何了解XSLT的人确认我没有遗漏任何明显的东西。

感谢您的关注!

下面是XSLT的完整代码:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
  <!ENTITY nbsp "&#x00A0;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:umbraco.library="urn:umbraco.library"
  exclude-result-prefixes="umbraco.library ">

  <xsl:import href="../xslt/globalFunctions.xslt" />

  <xsl:output method="xml" omit-xml-declaration="yes"/>

  <xsl:param name="currentPage"/>
  <xsl:param name="rteImage" select="/macro/rteImage" />
  <xsl:param name="rteText" select="/macro/rteText" />
  <xsl:param name="rteAuthor" select="/macro/rteAuthor" />
  <xsl:param name="rteLinkText" select="/macro/rteLinkText" />
  <xsl:param name="rteLink" select="/macro/rteLink" />
  <xsl:param name="rteDonationText" select="/macro/rteDonationText" />
  <xsl:param name="rteDonationLinkText" select="/macro/rteDonationLinkText" />
  <xsl:param name="rteDonationLink" select="/macro/rteDonationLink" />

 <xsl:template match="/">

    <blockquote class="quote">
      <xsl:variable name="imageRaw">
        <xsl:call-template name="getImageUrlfromXML">
          <xsl:with-param name="mediaItemXML" select="$rteImage/Image"/>
          <xsl:with-param name="height" />
          <xsl:with-param name="width" select="'100'" />
        </xsl:call-template>
      </xsl:variable>

      <xsl:if test="string-length($imageRaw) != 0">
        <img class="thumbImg" src="{$imageRaw}" />
      </xsl:if>

      <xsl:if test="string-length($rteText) != 0">
        <p>
          <xsl:value-of select="$rteText"/>
        </p>
      </xsl:if>

      <xsl:if test="string-length($rteAuthor) != 0">
        <h4 class="quotee">
          <xsl:value-of select="$rteAuthor"/>
        </h4>
      </xsl:if>

      <xsl:if test="string-length($rteLinkText) != 0 and string($rteLink) = number($rteLink)">
        <a class="quoteLink" href="{umbraco.library:NiceUrl($rteLink)}">
          <xsl:value-of select="$rteLinkText"/>
        </a>
      </xsl:if>

      <xsl:if test="string-length($rteDonationText) != 0 or (string-length($rteDonationLinkText) != 0 and string-length    ($rteDonationLink) != 0)">
        <div class="helpUs">
          <xsl:if test="string-length($rteDonationText) != 0">
            <h2>
              <xsl:value-of select="$rteDonationText"/>
            </h2>
          </xsl:if>
          <xsl:if test="string-length($rteDonationLinkText) != 0 and string-length($rteDonationLink) != 0">
            <a href="{$rteDonationLink}" target="_blank" class="donateBtn">
              <xsl:value-of select="$rteDonationLinkText"/>
            </a>
          </xsl:if>
        </div>
      </xsl:if>

    </blockquote>

  </xsl:template>

</xsl:stylesheet>
EN

回答 1

Stack Overflow用户

发布于 2015-08-18 22:40:03

我认为问题出在你逻辑的这一部分:

代码语言:javascript
复制
string($rteLink) = number($rteLink)

这两个永远不会相等,因为它们是不同的类型(一个数字和一个字符串)?也有可能$rteLink变量不能强制转换为数字。

它不应该是这样的吗:

代码语言:javascript
复制
<xsl:if test="string-length($rteLinkText) != 0 and string-length($rteLink) != 0 and number($rteLink) &gt; 0">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32069552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档