新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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 路径的属性可否传入参数 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9526 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: XSLT 路径的属性可否传入参数 举报  打印  推荐  IE收藏夹 
       本主题类别: 样式表技术(XSL, XSLT, XSL-FO, CSS)    
     guduke 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:155
      门派:XML.ORG.CN
      注册:2010/5/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给guduke发送一个短消息 把guduke加入好友 查看guduke的个人资料 搜索guduke在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看guduke的博客楼主
    发贴心情 XSLT 路径的属性可否传入参数

    <CATALOG>
    <edition category="102">
     <item>
      <name>苏教版</name>
      <id>1</id>
     </item>
     <item>
      <name>苏科版</name>
      <id>2</id>
     </item>  
    </edition>
    <edition category="103">
     <item>
      <name>苏教版103</name>
      <id>1</id>
     </item>
     <item>
      <name>苏科版103</name>
      <id>2</id>
     </item>  
    </edition>
    <edition category="104">
     <item>
      <name>苏教版104</name>
      <id>1</id>
     </item>
     <item>
      <name>苏科版104</name>
      <id>2</id>
     </item>  
    </edition>
    </CATALOG>


    这个XML 我想根据不同的属性值选出不同的节点下面的值 组成url

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" exclude-result-prefixes="pe">
    <xsl:param name="t" />
    <xsl:param name="nodeId" />
    <xsl:output method="html" />
    <xsl:template match="/">
    <xsl:for-each select="/CATALOG/edition[@category='102']/item">
    <li id="MenuID_1_0)">
    <a href="/Category_{$nodeId}/Index.aspx?edition=xx">
    <xsl:value-of select="name"/>
    </a>
    </li>
    <li id="MenuID_1_1)">
    <a href="/Category_{$nodeId}/Index.aspx?edition=xx">
    <xsl:value-of select="name"/>
    </a>
    </li>
    </xsl:for-each>

    </xsl:template>
    </xsl:stylesheet>

    红色的102可否为变量啊。就是通过传递不同的102 103 选取不同的节点。

    还有 红色的xx 应该是<xsl:value-of select="id"/>应该如何合成完整的URL呢

    红色的id 的0 1如何根据这个xml循环下来呢?
    还有上面xml怎么组织更合理啊。对组成URL更方便效率更高呢。谢谢!


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/5/13 9:37:00
     
     jj_long 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大三(面向对象是个好东东!)
      文章:42
      积分:574
      门派:XML.ORG.CN
      注册:2008/7/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jj_long发送一个短消息 把jj_long加入好友 查看jj_long的个人资料 搜索jj_long在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jj_long的博客2
    发贴心情 
    在XSLT语言里,使用得跟多的是match template的方式,而很少用for-each循环。

    以下是match template方式的代码。

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" exclude-result-prefixes="pe">

    <xsl:output method="html" />

    <xsl:template match="/">
     <xsl:apply-templates/>
    </xsl:template>


    <xsl:template match="edition">
     <li id="MenuID_1_{id}">
      <a href="/Category_{@category}/Index.aspx?edition={substring(name,string-length(name) - 3}"> <!-- edition的值是name元素值的后三位?) -->
       <xsl:value-of select="name"/>
      </a>
     </li>
    </xsl:template>

    </xsl:stylesheet>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/5/13 10:00:00
     
     guduke 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:155
      门派:XML.ORG.CN
      注册:2010/5/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给guduke发送一个短消息 把guduke加入好友 查看guduke的个人资料 搜索guduke在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看guduke的博客3
    发贴心情 
    你好,这个位置搞错了。id应该在edition后面的。你写的ID应该是从0开始的序号 0 1 2... 应该怎么写啊?


    怎么样通过赋值不同的比如102 103 来选择不同的子节点呢。

    [color=#FF0000]="/CATALOG/edition[@category='102']/item[/color]

    <xsl:template match="edition">edition[@category='102']应该如何写路径
    <li id="MenuID_1_{序号}">
      <a href="/Cat_{$nodeid}/Index.aspx?edition={id}"> <!-- edition的值是name元素值的后三位?) -->
       <xsl:value-of select="name"/>
      </a>
    </li>
    </xsl:template>

    因为要用又不太懂。谢谢啊!


    for循环那有什么不好啊?谢谢。还有我这个xml文件应该怎么写结构更好啊。谢谢!

    我的目的是。一个xml文档 category是不同节点的属性。 有节点 我实际使用的时候就是只需要选择不同的节点。然后组织成自己的url 而选择不同节点是通过传递参数的进去选择的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/5/13 10:42:00
     
     jj_long 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大三(面向对象是个好东东!)
      文章:42
      积分:574
      门派:XML.ORG.CN
      注册:2008/7/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jj_long发送一个短消息 把jj_long加入好友 查看jj_long的个人资料 搜索jj_long在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jj_long的博客4
    发贴心情 
    如果<li id="MenuID_1_{id}">中的id是序号且只要求唯一可以考虑使用<li id="MenuID_1_{generate-id()}">或者<li id="MenuID_1_{position()}">


    Q: 怎么样通过赋值不同的比如102 103 来选择不同的子节点呢。
    A: 看以下是否是你想要的:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" exclude-result-prefixes="pe">

    <xsl:param name="p_category"/>
    <xsl:output method="html" />

    <xsl:template match="/">
    <xsl:apply-templates select="/CATALOG/edition[@category=$p_category]"/>
    </xsl:template>


    <xsl:template match="edition">
    <li id="MenuID_1_{id}">
      <a href="/Category_{@category}/Index.aspx?edition={substring(name,string-length(name) - 3}"> <!-- edition的值是name元素值的后三位?) -->
       <xsl:value-of select="name"/>
      </a>
    </li>
    </xsl:template>

    </xsl:stylesheet>

    对XSLT,我的体会是:for循环是主动去找数据,然后处理。而template是被动地被调用。在XSLT里这两种方法都有非常有用。但是尽量使用后一种方式。我的理由是:
    在XSLT中最容易出现的问题就是漏数据,即:有数据在XML里边,但是没有调用到相应的template,导致没有输出的数据。 如果使用for循环主动去找数据,容易(注意:是容易而不是一定)出现漏数据的问题。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/5/14 0:02:00
     
     guduke 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:155
      门派:XML.ORG.CN
      注册:2010/5/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给guduke发送一个短消息 把guduke加入好友 查看guduke的个人资料 搜索guduke在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看guduke的博客5
    发贴心情 
    如果<li id="MenuID_1_{id}">中的id是序号且只要求唯一可以考虑使用<li id="MenuID_1_{generate-id()}">或者<li id="MenuID_1_{position()}"> 我想编号从0开始是不是就是position()-1吧。谢谢。这个问题解决 多谢帮助。!

    另外能不能麻烦你帮我看看这个问题。

    http://bbs.xml.org.cn/dispbbs.asp?boardID=8&ID=84715

    我的困惑现在是

    你好,我的意思<xsl:value-of select="Field"/>是我从数据库中查询出来的。我要从这个<xsl:value-of select="Field"/>中。查询出FieldInfo[@Id='version']/Settings/string[1]"的内容。怎么样写路径才能使得这个路径得到是<xsl:value-of select="Field"/>字段中的文档中的FieldInfo[@Id='version']/Settings/string[1] 路径的值。不晓得我表达清楚了没有。

    也就是我不晓得 从数据库中查询的<xsl:value-of select="Field"/> 中怎么样在xslt中来引用,从而写出 这个字段中存的xml文档的值。

    再次感谢!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/5/14 10:46: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/5/3 10:30:56

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

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