XSLT 1.0模板Muenchian分组

时间:2017-04-19 19:50:59

标签: templates xslt-1.0 muenchian-grouping

我使用的工具中预定义了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文件中获取两个模板的结果?

0 个答案:

没有答案