如何获得相同的元素第二次出现在同一父元素



我需要使用xslt在同一父元素中选择第二次出现的相同元素。

我正在显示我的xml..

<parent>
            <a>0001</a>
            <b>05</b>
            <c>20160825</c>
            <d>9463</d>
            <e>anders skov petersen</e>
            <f></f>
            <g></g>
            <h></h>
            <i></i>
            <a>0002</a>
            <b>05</b>
            <c>20160825</c>
            <d>9463</d>
            <e>anders skov petersen</e>
            <f></f>
            <g></g>
            <h></h>
            <i></i>
        </parent>

在我的xml中,a, b, c和所有其他元素出现两次。所以如果我需要在XSLT中第二次获取元素的值那么谁能告诉我怎么做?

您可以使用以下XPath-Expression

访问第二个a
/parent/a[2]

这是

的缩写形式
/parent/a[position()=2]

见https://www.w3.org/TR/xpath/

尝试识别在同一父元素中出现两次的相同元素(名称,而不是内容):

输入XML:

<parent>
   <a>0001</a>
   <b>05</b>
   <c>20160825</c>
   <d>9463</d>
   <e>anders skov petersen</e>
   <f></f>
   <g></g>
   <h></h>
   <i></i>
   <a>0002</a>
   <b>05</b>
   <c>20160825</c>
   <d>9463</d>
   <e>anders skov petersen</e>
   <f></f>
   <g></g>
   <h></h>
   <i></i>
   <j>New element</j>
</parent>
XSLT 1.0

:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="kDuplicate" match="*[generate-id(parent::*) = 
                                 generate-id(current()/parent::*)]" use="name()"/>
<xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()[key('kDuplicate', name())[2]]"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="parent">
    <xsl:copy>
      <xsl:for-each select="descendant::*[key('kDuplicate', name())[2]]">
        <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
      </xsl:for-each>
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

Result:(元素j不出现,因为它只在父元素中出现一次)

<parent>
  <a>0001</a>
  <b>05</b>
  <c>20160825</c>
  <d>9463</d>
  <e>anders skov petersen</e>
  <f/>
  <g/>
  <h/>
  <i/>
  <a>0002</a>
  <b>05</b>
  <c>20160825</c>
  <d>9463</d>
  <e>anders skov petersen</e>
  <f/>
  <g/>
  <h/>
  <i/>
</parent>

相关内容

  • 没有找到相关文章

最新更新