如何使用 xslt 过滤第一次出现的具有来自 xml 的不同属性的元素

how to filter first occurrence of an element with different attributes from xml using xslt

我正在尝试根据元素及其属性来过滤第一次出现的情况。这里的元素是相同的,但基于属性我们必须取第一次出现。

我的 xml 如下所示:

    <block ID="IF5">
        <codes ID="IF5" md.mnem="hg2">
            <info>
                <name>ARTICLE</name> 
                <designator>1</designator>
            <info>
        </codes>
        <codes ID="IF5" md.mnem="hg2c">
            <info>
                <headtext>PUBLIC</headtext>
            </info>
        </codes>
        <codes ID="IF5" md.mnem="hg2">
            <info>
                <name>ARTICLE</name> 
                <designator>1</designator>
            </info>
        </codes>
        <codes ID="IF5" md.mnem="hg2c">
            <info>
                <headtext>PUBLIC</headtext>
            </info>
        </codes>
    </block>

输出 xml 应如下所示:

        <block ID="IF5">
        <codes ID="IF5" md.mnem="hg2">
            <info>
                <name>ARTICLE</name> 
                <designator>1</designator>
            <info>
        </codes>
        <codes ID="IF5" md.mnem="hg2c">
            <info>
                <headtext>PUBLIC</headtext>
            </info>
        </codes>
    </block>

我正在尝试使用如下模板匹配:

<xsl:template match="codes.head[@md.mnem='hg*c' and position() &gt; 1]" />
<xsl:template match="codes.head[@md.mnem='hg*' and position() &gt; 1]" />

谁能帮我解决这个问题,在此先感谢。

将位置谓词分开放在最后,例如[position() > 1] 例如match="codes.head[@md.mnem='hg2c'][position() > 1]".