【发布时间】:2015-06-11 08:08:54
【问题描述】:
我需要对名称字段执行验证,看看它是否有任何非法字符。 以下是我目前的做法
<xsl:variable name="validChars" select="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. "></xsl:variable>
<wd:First_Name>
<xsl:variable name="illegalFirst" select="replace($getUserData.firstname, $validChars, '')" />
<xsl:value-of select="replace($getUserData.firstname, $illegalFirst, '')"/>
</wd:First_Name>
第一个 replace() 捕获任何/所有非法字符,第二个 replace() 删除那些捕获的字符。
面临的问题是,“名称”不一定总是包含一些非法字符。它也可以是一个有效的名称。在这种情况下,变量 $illegalFirst 将为空。这会引发错误“不允许将空序列作为 replace() 的第二个参数”。
我尝试验证如下
<xsl:if test="string-length($illegalFirst) > 0">
<xsl:value-of select="replace($getUserData.firstname, $illegalFirst, '')"/>
</xsl:if>
<xsl:if test="string-length($illegalFirst) = 0">
<xsl:value-of select="$getUserData.firstname"/>
</xsl:if>
此条件检查似乎不起作用。它仍然会抛出相同的错误消息。
从早上开始就拔头发。非常感谢任何帮助。
谢谢, 山姆。
【问题讨论】: