新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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如何进行多结点比较并加标记,高手帮帮忙! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4971 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: xslt如何进行多结点比较并加标记,高手帮帮忙! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     frestlily 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:107
      门派:XML.ORG.CN
      注册:2007/9/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给frestlily发送一个短消息 把frestlily加入好友 查看frestlily的个人资料 搜索frestlily在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看frestlily的博客楼主
    发贴心情 xslt如何进行多结点比较并加标记,高手帮帮忙!

    问题:通过比较两个结点,找出相同和不同,记录所有修改的内容和标记。
    如:
    <!-- 原始值内容 -->
     <response>
      <list code="list" count="3">
       <item>
        <property code="listId">
         <value>1</value>
        </property>
        <property code="content">
         <value><![CDATA[列表1内容]]></value>
        </property>
       </item>
       <item>
        <property code="listId">
         <value>2</value>
        </property>
        <property code="content">
         <value><![CDATA[列表2内容old]]></value>
        </property>
       </item>
      </list>
     </response>
    <!--更改后的内容 -->
     <request>
      <list code="list" count="2">
       <item>
        <property code="listId">
         <value>2</value>
        </property>
        <property code="content">
         <value><![CDATA[列表2修改内容]]></value>
        </property>
       </item>
       <item>
        <property code="listId">
         <value>3</value>
        </property>
        <property code="content">
         <value><![CDATA[新加的内容]]></value>
        </property>
       </item>
      </list>
     </request>
    通过xslt摸板进行比较和转换,生成结果如下:
    <!-- xslt转换后生成的内容 -->
     <request>
      <list code="list" count="3">
       <item operation="delete">
        <property code="listId">
         <value>1</value>
        </property>
        <property code="content">
         <value><![CDATA[列表1内容]]></value>
        </property>
       </item>
       <item operation="update">
        <property code="listId">
         <value>2</value>
        </property>
        <property code="content">
         <value><![CDATA[列表2修改内容]]></value>
        </property>
       </item>
       <item operation="insert">
        <property code="listId">
         <value>3</value>
        </property>
        <property code="content">
         <value><![CDATA[新加的内容]]></value>
        </property>
       </item>
      </list>
     </request>
    试了多回,还是不行,请大家帮帮忙。

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/18 10:12:00
     
     luypmp 帅哥哟,离线,有人找我吗?天蝎座1983-11-9
      
      
      等级:大二期末(C++考了100分!)
      文章:48
      积分:484
      门派:XML.ORG.CN
      注册:2007/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给luypmp发送一个短消息 把luypmp加入好友 查看luypmp的个人资料 搜索luypmp在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看luypmp的博客2
    发贴心情 
    楼主这个几个xml文件太有才了,
    仔细研究中

    ----------------------------------------------
    没事逛逛bbs.xml.org.cn! ---------自助者天助

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/20 20:41:00
     
     luypmp 帅哥哟,离线,有人找我吗?天蝎座1983-11-9
      
      
      等级:大二期末(C++考了100分!)
      文章:48
      积分:484
      门派:XML.ORG.CN
      注册:2007/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给luypmp发送一个短消息 把luypmp加入好友 查看luypmp的个人资料 搜索luypmp在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看luypmp的博客3
    发贴心情 
    有点灵感了!
    可以把list看成一个数据表datatable,两个字段(listId,content),其中listId为这个表的主键,
    对于原始值内容,就相当于这个表有两列:
    listId       content
    1            列表1内容
    2            列表2内容old
    对于更改后的内容,这个表中的内容就变成了:
    listId        content
    2             列表2修改内容
    3             新加的内容
    由于listId为主键,所以对这个表的修改过程就是:
    listId为1的行被删除
    listId为2的行由于content变了所以这行就被更新了
    listId为3的行由于原始表中没有这列,所以它就是新插入的行了


    我想xml文件必然符合一个scheme的定义,那么我们就可以先将这个xml文件转换成
    <list>
    <listId>2</listId>
    <content>列表2修改内容</content>
    </list>
    这样就好处理了 !

    ----------------------------------------------
    没事逛逛bbs.xml.org.cn! ---------自助者天助

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/20 21:37:00
     
     luypmp 帅哥哟,离线,有人找我吗?天蝎座1983-11-9
      
      
      等级:大二期末(C++考了100分!)
      文章:48
      积分:484
      门派:XML.ORG.CN
      注册:2007/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给luypmp发送一个短消息 把luypmp加入好友 查看luypmp的个人资料 搜索luypmp在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看luypmp的博客4
    发贴心情 
    楼主,这几个xml是书上的吗?如果是,不知书名是什么?
    如果不是,那太遗憾了,呵呵,那我就看不到这么精彩的内容了;

    其实我是做软件开发,而又跟xslt相关,所以看到楼主的例子有点兴奋了

    ----------------------------------------------
    没事逛逛bbs.xml.org.cn! ---------自助者天助

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/20 21:43:00
     
     frestlily 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:107
      门派:XML.ORG.CN
      注册:2007/9/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给frestlily发送一个短消息 把frestlily加入好友 查看frestlily的个人资料 搜索frestlily在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看frestlily的博客5
    发贴心情 
    呵呵,再次感谢luypmp:)
    我的处理和你的相同,是少了个条件,得在list中加个keycode,象数据库表的id一样标识一个唯一的item结点,这样就可以处理了。
    另:
    这个xml 文件是自己定义的。呵呵!
    我也正在处理xslt相关的东西,好多问题还请多指教。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/21 10:57:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/8/26 14:55:44

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

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