我有一个主 xsl,它包含两个不同 xsl 的单独引用,如下所示,但问题是当我转换它时它会引发异常 ThaT
请告知是我的主要 XSL 格式良好,或者我缺少某些内容。
<xsl:import href="qwe.xsl"/>
<xsl:import href="qrt.xsl"/>
<xsl:template match="/abml">
<cfabcmessage>
<defflows>
<xsl:variable name="ttSystem">
<xsl:call-template name=ttSystem_template"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="ttSystem = 'ABC'">
<xsl:call-template name="dgddsh_ABC"/>
</xsl:when>
<xsl:call-template name="hjsgscjkd_DEG"/>
</xsl:choose>
</defflows>
</cfabcmessage>
</xsl:template>
</xsl:stylesheet>
我已经完成了更正,但在转换时我仍然收到此错误。.
21:03:34,892 ERROR [main] JAXPSAXProcessorInvoker - xsl:when is not allowed in this position in the stylesheet!;
名称属性的以下行缺少双引号:
<xsl:call-template name="ttSystem_template"/>
不确定您是否只是省略了第一行,但您还需要以下内容:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
关于新问题,目前尚不清楚何时要调用第二个"调用模板",但如果这应该是"else"条件,那么您需要使用"xsl:else"
<xsl:choose>
<xsl:when test="ttSystem = 'ABC'">
<xsl:call-template name="dgddsh_ABC"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="hjsgscjkd_DEG"/>
</xsl:otherwise>
</xsl:choose>
您在 ttSystem_template
前面缺少双引号,并且在xsl:when
收盘价和xsl:choose
收盘价之间有xsl:call-template
。 将xsl:call-template
(1) 在xsl:when
内移动,(2) 在xsl:otherwise
内移动,或 (3) 在xsl:choose
外移动。 (您也缺少开始xsl:stylesheet
标签,但这可能只是一个复制和粘贴错误。
下面是 XSLT 的完整更正副本:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="qwe.xsl"/>
<xsl:import href="qrt.xsl"/>
<xsl:template match="/abml">
<cfabcmessage>
<defflows>
<xsl:variable name="ttSystem">
<xsl:call-template name="ttSystem_template"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="ttSystem = 'ABC'">
<xsl:call-template name="dgddsh_ABC"/>
<!-- 1. Want call to hjsgscjkd_DEG it here? -->
<xsl:call-template name="hjsgscjkd_DEG"/>
</xsl:when>
<!-- XXX Call to hjsgscjkd_DEG cannot go here. -->
<xsl:otherwise>
<!-- 2. Want call to hjsgscjkd_DEG it here? -->
<xsl:call-template name="hjsgscjkd_DEG"/>
</xsl:otherwise>
</xsl:choose>
<!-- 3. Want call to hjsgscjkd_DEG it here? -->
<xsl:call-template name="hjsgscjkd_DEG"/>
</defflows>
</cfabcmessage>
</xsl:template>
</xsl:stylesheet>