如何处理具有相同匹配项的 XSLT 多个模板?

How to deal with XSLT Multiple templates with same match?

其中有 4 类。每个类别都有自己给定的结构。为此,我定义了 4 个不同的模板。 两个类别使用相同的结构,它们仅在某些元素上不同。所以它们被解析为相同的匹配项。

这里是部分 XSLT 文件。

<xsl:template match="pr:objects/pr:act/">

    <entry>
        <per_type_crm_de>
            <xsl:value-of select="pr:act_type_crm/pr:act_type_crm/pr:_standard/pr:de-DE"/>
        </per_type_crm_de>
        <per_type_crm_en>
            <xsl:value-of select="pr:act_type_crm/pr:act_type_crm/pr:_standard/pr:en-US"/>
        </per_type_crm_en>
        <per_type_crm_it>
            <xsl:value-of select="pr:act_type_crm/pr:act_type_crm/pr:_standard/pr:it-IT"/>
        </per_type_crm_it>
        <per_type_crm_fr>
            <xsl:value-of select="pr:act_type_crm/pr:act_type_crm/pr:_standard/pr:fr-FR"/>
        </per_type_crm_fr>
        <per_uuid>
            <xsl:value-of select="pr:_uuid"/>
        </per_uuid>
        <per_nc_name>
            <xsl:value-of select="pr:act_nc_name"/>
        </per_nc_name>
    </entry>
</xsl:template>
<xsl:template match="pr:objects/pr:act">
    <entry>
        <grp_system_object_id>
            <xsl:value-of select="pr:_system_object_id"/>
        </grp_system_object_id>
        <grp_last_modified>
            <xsl:value-of select="pr:act_last_modified"/>
        </grp_last_modified>
        <_uuid>
            <xsl:value-of select="pr:_uuid"/>
        </_uuid>
        <grp_nc_name>
            <xsl:value-of select="pr:act_nc_name"/>
        </grp_nc_name>
        <grp_nc_name_lang_akronym>
            <xsl:value-of select="pr:act_nc_name_lang/pr:generic_lang/pr:generic_lang_akronym"/>
        </grp_nc_name_lang_akronym>
    </entry>
</xsl:template>

因此我得到的结果是 xml 指的是第一个模板匹配被正确解析和分类,而指的是第二个模板的 xml 根本没有被解析。 我该如何处理这个问题?通过使用两个类别之间不同的元素结构 id(下图)作为第二个匹配选项可以解决问题吗?

<per_uuid>
  <xsl:value-of select="pr:_uuid"/>
</per_uuid>

如果是这样,我如何定义多个匹配选项?

此致

如果不查看输入数据,很难真正理解您要做什么,但我猜您想像这样区分您的两个模板:

<xsl:template match="pr:objects/pr:act[pr:_uuid='someValue1']">
  ...
</xsl:template>

<xsl:template match="pr:objects/pr:act[pr:_uuid='someValue2']">
  ...
</xsl:template>