XSL错误:xsl:template元素不能包含xsl:template元素

时间:2012-09-30 07:00:25

标签: xml xslt

执行xsl后,收到错误:

  

因为:xsl:template元素不能包含xsl:template   元件; SYSTEMID:   文件:/ C:/xslt/CombineToOutput.xsl;   行#:19;列#: - 1元素必须仅在顶层使用   样式表; SYSTEMID:   文件:/ C:/xslt/CombineToOutput.xsl;   行#:19;列#: - 1(无法编译样式表.2错误   检测到。)(无法编译样式表。检测到2个错误。)

XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.openapplications.org/oagis/9">

    <!--  STICKER INFO COMBINETOOUTPUT-->
    <xsl:template match="/">
        <xsl:apply-templates select="child::node()/*[name()!='DbResponse']"/>       
    </xsl:template>

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*:PurchaseOrder">
        <xsl:apply-templates select="*:PurchaseOrderLine/Item/CustomerItemID/ID"/>

        <xsl:template match="*:PurchaseOrderLine/Item/CustomerItemID/ID">
            <xsl:variable name="ArtNr" select="/*/ProcessPurchaseOrder/DataArea/PurchaseOrder/PurchaseOrderLine/Item/CustomerItemID/ID"/>
            <xsl:variable name="WepNr" select="/*/DbResponse/ResultSet/Row[Cell[@name='ARTNR']=$ArtNr]/Cell[@name='WEPNR']"/>
            <xsl:copy>
                <xsl:if test="$WepNr!=''">
                    <LineNumber><xsl:value-of select="$WepNr"/></LineNumber>
                </xsl:if>
                <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
        </xsl:template>
    </xsl:template>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

错误消息很明确。

<xsl:template match="*:PurchaseOrder"> 

包含

    <xsl:template match="*:PurchaseOrderLine/Item/CustomerItemID/ID"> 

并且在XSLT中不允许这样做。只需移动内部模板,使其不再包含在外部模板中。