我收到错误消息“服务器错误在'/‘应用程序中。输入字符串的格式不正确。”从插入了下面XSLT的Umbraco中查看页面时。
我认为这是由于试图将此XSLT文件中的字符串转换为数字而导致的。可能来自这一行:
<xsl:if test="string-length($rteLinkText) != 0 and string($rteLink) = number($rteLink)">如果我从页面中删除XSLT,它可以很好地呈现。
我只想向任何了解XSLT的人确认我没有遗漏任何明显的东西。
感谢您的关注!
下面是XSLT的完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
<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>发布于 2015-08-18 22:40:03
我认为问题出在你逻辑的这一部分:
string($rteLink) = number($rteLink)这两个永远不会相等,因为它们是不同的类型(一个数字和一个字符串)?也有可能$rteLink变量不能强制转换为数字。
它不应该是这样的吗:
<xsl:if test="string-length($rteLinkText) != 0 and string-length($rteLink) != 0 and number($rteLink) > 0">https://stackoverflow.com/questions/32069552
复制相似问题