我有一个XSLT功能,其检查所发送的参数是否处于YYYYMMDD格式或没有。 在某些情况下,我没有得到任何价值的功能,在这些条件SAXON抛出下面的错误
“空序列不允许作为CDA的第一个参数:isValidDate()”
任何建议如何处理这种情况?
我有一个XSLT功能,其检查所发送的参数是否处于YYYYMMDD格式或没有。 在某些情况下,我没有得到任何价值的功能,在这些条件SAXON抛出下面的错误
“空序列不允许作为CDA的第一个参数:isValidDate()”
任何建议如何处理这种情况?
在XSLT没有Null值。 代表不存在的值,可以使用零长度字符串或空序列。 它们不是同样的事情-空序列将从返回0 count($x)
,但零长度字符串是包含类型xs一个项目的序列:字符串,其具有0(串长度count($x) = 1
和string-length($x) = 0
)。
大多数标准XPath函数接受一个零长度字符串或空序列,但您的自定义功能可能不会。
该问题可能如果你选择角色的顺序发生。 例如,如果您选择包含节点不存在串一个节点的值,你会得到一个空序列 - 但如果节点存在和值为空,你会得到空字符串。
修改您所选择的价值的方式总是有一个空字符串(或包装材料/改变isValidDate
函数接受空序列)。 下面的函数定义将接受空序列,并将其转换为一个零长度字符串:
<xsl:function name="cda:isValidDate" as="xs:boolean">
<xsl:param name="datestring" as="xs:string?"/>
<xsl:variable name="reallyastring" select="string($datestring)"/>
Your code
</xsl:function>
的?
在xs:string?
PARAM类型允许提供一个或没有任何项目。 该string(...)
函数永远不会返回一个空字符串,从而将空序列转换成零长度字符串。