如果(看起来)您正在尝试确定输入是否包含有效日期 - 即相当于:
XSLT 2.0
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="Date" select="Input/Date"/>
<xsl:value-of select="$Date castable as xs:date"/>
</xsl:template>
</xsl:stylesheet>
然后尝试以下操作:
XSLT 1.0 (+ EXSLT)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="Date" select="Input/Date"/>
<xsl:value-of select="boolean(date:date($Date))"/>
</xsl:template>
</xsl:stylesheet>
这应该适用于任何支持 EXSLT date:date() 扩展函数的 XSLT 1.0 处理器,包括。IBM 数据电源。
但是请注意,它不适用于 Saxon 6.5.5,尽管在这种情况下规范规定空字符串作为所需结果,但它会愉快地输出2011-31-12
结果。<xsl:value-of select="date:date('2011-31-12')"/>