Function 如何创建返回布尔值的xsl:函数

Function 如何创建返回布尔值的xsl:函数,function,xslt,xslt-2.0,Function,Xslt,Xslt 2.0,我想创建一个xsl:函数,其中包含一些可以返回布尔值的参数,我遇到了一些问题: <xsl:if test="my:isEqual($Object1, $Object2)">SAME!</xsl:if> <xsl:function name="my:isEqual"> <xsl:param name="Object1" /> <xsl:param name="Object2" /> <xsl:variab

我想创建一个xsl:函数,其中包含一些可以返回布尔值的参数,我遇到了一些问题:

<xsl:if test="my:isEqual($Object1, $Object2)">SAME!</xsl:if>

<xsl:function name="my:isEqual">
    <xsl:param name="Object1" />
    <xsl:param name="Object2" />

    <xsl:variable name="Object1PostalCode select="$Object1/PostalCode" />
    <xsl:variable name="Object2PostalCode select="$Object2/PostalCode" />
    <xsl:if test="$Object1PostalCode = $Object2PostalCode">
        !!!What to do here!!!
    </xsl:if>
</xsl:function> 
一样!
!!!在这里做什么!!!
您只需要

<xsl:sequence select="$Object1PostalCode = $Object2PostalCode"/>

而不是xsl:if

我想创建一个xsl:function,其中包含一些可以返回的参数 一个布尔值,我遇到了麻烦:

<xsl:if test="my:isEqual($Object1, $Object2)">SAME!</xsl:if>

<xsl:function name="my:isEqual">
    <xsl:param name="Object1" />
    <xsl:param name="Object2" />

    <xsl:variable name="Object1PostalCode select="$Object1/PostalCode" />
    <xsl:variable name="Object2PostalCode select="$Object2/PostalCode" />
    <xsl:if test="$Object1PostalCode = $Object2PostalCode">
        !!!What to do here!!!
    </xsl:if>
</xsl:function> 
而是使用XSLT 2.0的全部功能并指定正确的类型

<xsl:function name="my:isEqual">           
  <xsl:param name="Object1" />           
  <xsl:param name="Object2" /> 
<xsl:function name="my:isEqual" as="xs:boolean">           
  <xsl:param name="Object1" as="element()?" />           
  <xsl:param name="Object2" as="element()?" /> 
    <xsl:if test="$Object1PostalCode = $Object2PostalCode">                     
      !!!What to do here!!!                 
    </xsl:if>             
</xsl:function>  

伟大的然而,实际测试稍微复杂一些。允许像这样进行复杂的“选择”吗?@BasHendriks:还是一样——不管测试有多复杂,只要输出(已评估的)测试就行了。谢谢,很好的解释:)
    <xsl:sequence select="$Object1PostalCode eq $Object2PostalCode"/>                     
</xsl:function>