2016-08-18 51 views

回答

0

嘗試此(XSLT2)

XML:

<root> 
<surname>Nielsen</surname> 
<given-name>M A</given-name> 

<surname>Chuang</surname> 
<given-name>I L</given-name> 
</root> 

XSLT 2.0:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes" /> 

<xsl:template match="root"> 
    <xsl:copy> 
    <xsl:for-each-group select="*" group-starting-with="surname"> 
     <name> 
      <xsl:copy-of select="current-group()" /> 
     </name> 
    </xsl:for-each-group> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

輸出:

<root> 
    <name> 
    <surname>Nielsen</surname> 
    <given-name>M A</given-name> 
    </name> 
    <name> 
    <surname>Chuang</surname> 
    <given-name>I L</given-name> 
    </name> 
</root> 
1

嘗試此(XSLT1.0)

XML:

<root> 
    <surname>Nielsen</surname> 
    <given-name>M A</given-name> 
    <surname>Chuang</surname> 
    <given-name>I L</given-name> 
</root> 

XSLT:

<?xml version="1.0" encoding="utf-8"?> 
    <xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

     <xsl:output method="xml" /> 
     <xsl:template match="/root"> 
      <xsl:copy> 
       <xsl:for-each select="surname"> 
        <name> 
         <xsl:copy-of select="."/> 
         <xsl:copy-of select="following-sibling::given-name[1]"/> 
        </name> 
       </xsl:for-each> 
      </xsl:copy> 
     </xsl:template> 
    </xsl:stylesheet> 

OUTPUT:

<?xml version="1.0"?> 
<root> 
    <name> 
    <surname>Nielsen</surname> 
    <given-name>M A</given-name> 
    </name> 
    <name> 
    <surname>Chuang</surname> 
    <given-name>I L</given-name> 
    </name> 
</root>