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

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → 节点集中以某个节点为界分开处理怎么实现? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2112 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 节点集中以某个节点为界分开处理怎么实现? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     kahon 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:129
      门派:XML.ORG.CN
      注册:2005/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kahon发送一个短消息 把kahon加入好友 查看kahon的个人资料 搜索kahon在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kahon的博客楼主
    发贴心情 节点集中以某个节点为界分开处理怎么实现?

    对于一个xml文档,在其中某个节点以前用一种(假设为第一种)处理方式,某节点后也用同样的方式。只有遇到某类节点时用第二中处理方法。
         象xml文档中,<p></p>之间可能嵌套<table>等,我要在xsl文件中写一些处理,对于不是<table>的标签用第一种方法,对于任何的<table><img>等标签用第二种处理方法。但是顺序要跟在刚才第一的处理后。然后对其后的节点再用第一种方法。我想用xsl实现,因为转换比较复杂,不想用编程语言写,不知道直接写xsl文件可行不,高手请指教。

    例如:
    xml源文档

    <p>
    ......sometext here
    <p>
    <table>
    ...table content
    </table>
    </p>
    other tags here
    </p>

    <Text>
    这里放所有的p的子孙,直到出现<table>以前的元素的处理放入此处
    </Text>
    <Table>
    ...这里放所有的源中table的内容
    </Table>
    <Text>
    table后所有的标签(following of the 'table')的元素内容的处理
    </Text>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/30 20:53:00
     
     kahon 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:129
      门派:XML.ORG.CN
      注册:2005/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kahon发送一个短消息 把kahon加入好友 查看kahon的个人资料 搜索kahon在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kahon的博客2
    发贴心情 
    写了如下的框架。就是不知道怎么选择分界节点之前的所有节点,怎么表示。
    <xsl:template match="body/p">
    <!-- ============================================
       分情况,如果子孙中根本没有此类分界的节点,不用那么麻烦,否则只好处理
        =============================================== -->
    <xsl:choose>
    <xsl:when test="not(descendant::img | descendant::table)">
    <Text>
    processing for the Text
    </Text>
    </xsl:when>

    <xsl:otherwise>
    <Text>
    <xsl:for-each select="表达式,可以表示在分界节点前所有其他子孙(怎么表示现在不知道)">
    </xsl:for-each>
    </Text>
    <xsl:if test="出现了table没有">
    <Table>
    对表的处理
    </Table>
    </xsl:if>
    <xsl:if test="img出现没有">
    对img的处理
    </xsl:if>
    </xsl:otherwise>

    </xsl:choose>
    </xsl:template>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/30 22:14:00
     
     kahon 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:129
      门派:XML.ORG.CN
      注册:2005/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kahon发送一个短消息 把kahon加入好友 查看kahon的个人资料 搜索kahon在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kahon的博客3
    发贴心情 
    摘自exslt的set:leading 可以实现第一个参数nodeset中截取第二个参数nodeset的第一个节点第一次出现前的所有部分。
    <xsl:template name="set:leading">
       <xsl:param name="nodes" select="/.." />
       <xsl:param name="node" select="/.." />
       <xsl:variable name="end-node" select="$node[1]" />
       <xsl:choose>
          <xsl:when test="not($end-node) or not($nodes)">
             <xsl:apply-templates select="$nodes"
                                  mode="set:leading" />
          </xsl:when>
          <xsl:when test="count($end-node|$nodes) != count($nodes) or
                          count($nodes[1] | $end-node) = 1" />
          <xsl:otherwise>
             <xsl:apply-templates select="$nodes[1]"
                                  mode="set:leading" />
             <xsl:call-template name="set:leading">
                <xsl:with-param name="nodes" select="$nodes[position() > 1]" />
                <xsl:with-param name="node" select="$end-node" />
             </xsl:call-template>
          </xsl:otherwise>
       </xsl:choose>
    </xsl:template>

    <xsl:template match="node()|@*" mode="set:leading">
       <xsl:copy-of select="." />
    </xsl:template>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/31 23:22: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/9/29 10:53:19

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

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