以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]XSLT中是否支持这种处理需求?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=83544)


--  作者:zhuojunjian2009
--  发布时间:2/18/2010 10:16:00 PM

--  [求助]XSLT中是否支持这种处理需求?
我的源文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<add>
  <doc>
      <field name="Actor">xiao hua</field>
      <field name="Actor">xiao ming</field>
  </doc>
  <doc>
       <field name="Actor">zhang san </field>
       <field name="Actor">li si</field>
       <field name="Actor">wang wu</field>
  </doc>
</add>

需要将其转化为如下的格式:
<?xml version="1.0" encoding="UTF-8"?>
<List>
  <doc>
    <field name="Actor">xiao hua,xiao ming</field>
  </doc>
  <doc>
    <field name="Actor">zhang san,li si,wang wu</field>
  </doc>
</List>
我需要编写对应的xsl文件,其难点在于:如何将源文件中的各个Actor节点读取出来而且完成内容的合并。哪位大侠能帮忙看下,给出一个XSL文件呢?多谢多谢:)


--  作者:Qr
--  发布时间:2/19/2010 11:54:00 AM

--  
<field name="Actor"><xsl:apply-templates select="field"/></field>


<xsl:template match="field">
<xsl:value-of select="."/>,
</xsl:template>
末尾会多一个逗号,可以通过判断是否最后一个field节点来控制逗号的输出。


--  作者:zhuojunjian2009
--  发布时间:2/19/2010 10:39:00 PM

--  
假如这中间有别的节点呢?
例如,源文件变为如下,而目标文件不变:
<add>
  <doc>
      <field name="Actor">xiao hua</field>
      <field name="Actor">xiao ming</field>
      <field name="Year">2007</field>
  </doc>
  <doc>
       <field name="Actor">zhang san </field>
       <field name="Actor">li si</field>
       <field name="Year">2008</field>
       <field name="Actor">wang wu</field>
  </doc>

--  作者:Qr
--  发布时间:2/21/2010 11:53:00 AM

--  
保留就用2楼的代码,不保留,可以通过“[]”来过滤
--  作者:Qr
--  发布时间:2/21/2010 11:54:00 AM

--  
自己试一下吧,这种转换是XSLT的强项,也是基本应用。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms