我可以用param创建一个xsl:function作为节点吗?

时间:2009-08-31 00:15:37

标签: xml xslt

我有一个方案来验证来自传入的xml文件的日期,该文件将effectiveTime作为元素,该元素的格式可以是其中之一,如下所示

1)

<effectiveTime value="YYYYMMDD"/>

2)

<effectiveTime>
    <low value="YYYYMMDD"/>
    <high value="YYYYMMDD"/>
</effectiveTime>

如果传入文件的格式指定为第1点(如上所述),那么我需要验证@value是否在YYYYMMDD中,如果它是其他格式(第二个),我需要验证低@value日期小于或等于高@value或不高。

我在传入的XML文件中的几个地方有这个元素(<effectiveTime>),我想写一个xsl:function,它可以验证这个场景,我想发送节点(这里是effectiveTime)作为xsl:function的参数。

<xsl:function name="util:validateEffectiveTime" as="xs:boolean">
    <!-- I would like to know xml schema data type for the param -->
    <xsl:param name="effectiveTimeP" as="****"/>
</xsl:function>

我可以继续创建任何xsl:function(util:validateEffectiveTime),接受节点作为xsl:function的参数,还让我知道我需要分配给param(effectiveTimeP)的xml架构数据类型吗? / p>

谢谢!

1 个答案:

答案 0 :(得分:0)

如果要将<effectiveTime>元素本身传递给函数,则函数将始终在effectiveTimeP参数中接收元素。虽然如果有疑问,参数类型是可选的,所以你可以完全不用它们。

对于日期验证,我可能会把它放在它自己的函数中(因为它有必要在三个不同的地方,因为有三个位置可能会出现日期)。但在第二种情况下,由于日期是最重要的 - 部分 - 第一顺序(年,月,日),您可以通过简单的数字比较确保一个在另一个之前。