在下面的代码中,我想在一个xsl文件中定义一个函数,并将其包含在另一个xsl中,然后调用它。我试图返回一个布尔值。我刚开始使用XSLT。工作代码或样品将不胜感激。
以下代码会引发错误:
错误:'非静态Java函数的第一个参数 'notMissingAndNull'不是有效的对象引用。致命错误: '非静态Java函数的第一个参数 'notMissingAndNull'不是有效的对象引用。'
第一个XSLT:CommonFunctions.xsl
<?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"
xmlns:func="func:func"
>
<xsl:function name="func:notMissingAndNull" as="xs:boolean">
<xsl:param name="missing" as="xs:string"/>
<xsl:param name="after" as="xs:string"/>
<xsl:if test="$missing.length>0 and $after.length>0">
<xsl:value-of select="true" />
</xsl:if>
</xsl:function>
</xsl:stylesheet>
另一个XSLT:调用函数
<?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"
xmlns:func="func:func"
>
<xsl:import href="CommonFunctions.xsl"/>
<xsl:output method="xml" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:if
test="@name = 'AC_NAME'">
<AccountName xpath="Account/{{accountId}}/AccountName"
mapRules="">
<xsl:value-of select="func:notMissingAndNull('missing','after')" />
</AccountName>
</xsl:if>
</xsl:template>
</xsl:stylesheet>