我使用的工具中预定义了xslt模板,不希望将其删除。
<xsl:template match="/">
<Msg xmlns="urn:com.sap.b1i.vplatform:entity">
<xsl:copy-of select="/vpf:Msg/@*"></xsl:copy-of>
<xsl:copy-of select="/vpf:Msg/vpf:Header"></xsl:copy-of>
<Body>
<xsl:copy-of select="/vpf:Msg/vpf:Body/*"></xsl:copy-of>
<Payload Role="X" id="{$atom}">
<xsl:call-template name="transform"></xsl:call-template>
</Payload>
</Body>
</Msg>
<xsl:template name="transform">
<!-- In this area we write our xpath and build the xml-file-->
</xsl:template>
现在我想使用Muenchian分组方法。但是对于这种方法,您还需要定义一个模板en key。像这样:
<xsl:key name="KeyOrder" match="/vpf:Msg/vpf:Body/vpf:Payload[@id='atom8']/Orders/jdbc:Row" use="jdbc:RecId2" />
<xsl:template match="Orders" >
<Documents>
<xsl:for-each select="jdbc:Row[count(. | key('KeyOrder', jdbc:RecId2)[1]) = 1]">
<xsl:sort select="jdbc:RecId2" />
<Document>
<xsl:copy-of select="jdbc:RecId2" />
<xsl:for-each select="key('KeyOrder', jdbc:RecId2)">
<xsl:sort select="jdbc:OrderNrRef" />
<xsl:copy-of select="." />
</xsl:for-each>
</Document>
</xsl:for-each>
</Documents>
</xsl:template>
问题是2个模板不能像我在这里复制它那样工作。这意味着,我没有得到Muenchian分组结果。它仅在我'禁用'xsl:template match =“/”时有效,但后来我失去了许多其他信息,这在此过程中是必要的。
那么如何在我的XML文件中获取两个模板的结果?