以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  请教一个xml转换的问题!急!!!万分感谢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=11342)


--  作者:hungrytiger
--  发布时间:10/27/2004 5:13:00 PM

--  请教一个xml转换的问题!急!!!万分感谢
源文件格式:
<root>
<indexdata>
<ID>001</ID>
<Name>A</Name>
</indexdata>
<indexdata>
<ID>001</ID>
<Name>B</Name>
</indexdata>
<indexdata>
<ID>002</ID>
<Name>C</Name>
</indexdata>
<indexdata>
<ID>002</ID>
<Name>D</Name>
</indexdata>
</root>
要转换成以下格式:
<root>
<data>
<ID>001</ID>
<Name>A;B</Name>
</data>
<data>
<ID>002</ID>
<Name>C;D</Name>
</data>
</root>

--  作者:doubleG
--  发布时间:10/27/2004 6:02:00 PM

--  
分下组就可以了啊。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" encoding="UTF-8" version="1.0"/>
<xsl:key name="IDKey" match="ID" use="text()"/>
<xsl:template match="/">
 <xsl:element name="root">
  <xsl:for-each select="//ID[generate-id(.)=generate-id(key('IDKey',text()))]">
   <xsl:variable name="IDValue" select="."/>
   <xsl:element name="data">
    <xsl:element name="ID">
     <xsl:value-of select="."/>
    </xsl:element>
    <xsl:element name="Name">
     <xsl:for-each select="//Name[../ID=$IDValue]">
      <xsl:if test="position() &gt; 1">
       <xsl:text >;</xsl:text>
      </xsl:if>
      <xsl:value-of  select="."/>
     </xsl:for-each>
    </xsl:element>
   </xsl:element>
  </xsl:for-each>
 </xsl:element>
</xsl:template>
</xsl:stylesheet>



--  作者:hungrytiger
--  发布时间:10/27/2004 6:48:00 PM

--  
搞定.谢谢!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
47.363ms