我在' /'中收到错误"服务器错误应用。输入字符串的格式不正确。"从Umbraco查看下面插入了XSLT的页面时。
我认为这是由于尝试将字符串转换为此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>
答案 0 :(得分:0)
我认为这个问题是你逻辑的一部分:
string($rteLink) = number($rteLink)
这两个永远不会相等,因为它们是不同的类型(一个数字和一个字符串)? $ rteLink变量也可能无法转换为数字。
不应该是这样的:
<xsl:if test="string-length($rteLinkText) != 0 and string-length($rteLink) != 0 and number($rteLink) > 0">