如何在xsl中将少数子节点作为父节点? xslt为此

时间:2015-09-30 22:26:31

标签: xml xslt

我有以下xml格式

<A>
 <a>1</a>
 <b>2</b>
 <c>3</c>
 ........
 ........
</A>

我想将其格式化为

 <A a="1" b="2">
 <c>3</c> 
 .........
</A>

注意:我只希望前几个说2个孩子转换为父母的属性,而不是全部。

知道转换所有属性的xsl是

  <xsl:template match="A">
  <A> 
     <xsl:for-each select="*">
       <xsl:attribute name="{name()}"> 
          <xsl:value-of select="text()"/> 
       </xsl:attribute> 
     </xsl:for-each> 
  <A> 
  </xsl:template>

1 个答案:

答案 0 :(得分:0)

只需使用一些位置谓词:

<xsl:template match="A">
    <A> 
        <xsl:for-each select="*[position() &lt;= 2]">
            <xsl:attribute name="{name()}"> 
                <xsl:value-of select="text()"/> 
            </xsl:attribute> 
        </xsl:for-each> 
        <xsl:copy-of select="*[position() > 2]"/>
    </A> 
</xsl:template>