XSLT从另一个xslt

时间:2016-02-08 09:19:45

标签: xml xslt xslt-1.0 xslt-2.0

在下面的代码中,我想在一个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>

0 个答案:

没有答案