新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [原创]小妹初涉XSLT,求实现如下XML模型转换的样式表,希望能帮忙调一下,感激不尽 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7162 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [原创]小妹初涉XSLT,求实现如下XML模型转换的样式表,希望能帮忙调一下,感激不尽 举报  打印  推荐  IE收藏夹 
       本主题类别: 样式表技术(XSL, XSLT, XSL-FO, CSS)    
     math0423 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:2
      积分:54
      门派:XML.ORG.CN
      注册:2010/1/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给math0423发送一个短消息 把math0423加入好友 查看math0423的个人资料 搜索math0423在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看math0423的博客楼主
    发贴心情 [原创]小妹初涉XSLT,求实现如下XML模型转换的样式表,希望能帮忙调一下,感激不尽

    这是根据实际问题抽象出来的模型如下:
    原XML文件如下,大意就是先按year分组,然后再在year中按照typeid分组
    <?xml version="1.0" encoding="GB2312"?>
    <catalog>
        <cd>
            <title>Empire Burlesque </title>
            <typeid>001 </typeid>
            <year>1985 </year>
        </cd>
        <cd>
            <title>Hide your heart </title>
            <typeid>002 </typeid>
            <year>1985 </year>
        </cd>
        <cd>
            <title>Still got the blues </title>
            <typeid>001 </typeid>
            <year>1986 </year>
        </cd>
    </catalog>
    要求转成如下格式:
    <?xml version="1.0" encoding="GB2312"?>
    <Result>
        <Year id = "1985">
            <Typeid num = "001">
    <title>Empire Burlesque </title>
            </Typeid>
            <Typeid num = "002">
    <title>Hide your heart </title>
            </Typeid>
        </Year>
        <Year id = "1986">
            <Typeid num = "001">
    <title>Still got the blues </title>
            </Typeid>
        </Year>
    </Result>

    下面是我写的样式表:
    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="2.0" encoding="GB2312" indent="yes" cdata-section-elements="DataContent "  />
    <xsl:template match="/">
    <Result>
    <xsl:for-each-group select="catalog/cd" group-by="year">
    <Year>
      <xsl:attribute name="id">
        <xsl:value-of select="year" />
      </xsl:attribute>
    <xsl:for-each-group select="catalog/cd" group-by="typeid">
            <Typeid >
       <xsl:attribute name="num">
        <xsl:value-of select="typeid" />
      </xsl:attribute>
    <title>><xsl:value-of select="title"/></title>
            </Typeid>
    </xsl:for-each-group>
    </Year>
    </xsl:for-each-group>
    </Result>  
    </xsl:template>
    </xsl:stylesheet>
    下面是我写的java+XSKT转换xml用的java代码,有熟悉的提点意见或者有没有更好的java方法,请不吝指教。
            String src = "d:/xslt/test.xml";
            String dest= "d:/testResult.xml";
            String xslt="d:/xslt/test.xsl";
            File xmlFile = new File(src);
            File xsltFile = new File(xslt);
            File dest2 = new File(dest);
            Source xmlSource = new StreamSource(xmlFile);
            Source xsltSource = new StreamSource(xsltFile);
            StreamResult sr = new StreamResult (dest2.toString());
            TransformerFactory transFact =
                    TransformerFactory.newInstance();
            Transformer trans = transFact.newTransformer(xsltSource);
            trans.setOutputProperty("encoding", "gb2312");
            trans.transform(xmlSource, sr);

    有熟悉的麻烦帮写一下能用的xslt样式表给参考下,感激涕零!


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/1/12 10:56:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/22 13:02:21

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    8,746.094ms