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

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [求助]请师兄们帮我看看如何利用xsl获取xml文件中的值并产生相应链接 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 8278 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]请师兄们帮我看看如何利用xsl获取xml文件中的值并产生相应链接 举报  打印  推荐  IE收藏夹 
       本主题类别: 样式表技术(XSL, XSLT, XSL-FO, CSS)    
     ehrchina 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:60
      门派:XML.ORG.CN
      注册:2010/9/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ehrchina发送一个短消息 把ehrchina加入好友 查看ehrchina的个人资料 搜索ehrchina在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ehrchina的博客楼主
    发贴心情 [求助]请师兄们帮我看看如何利用xsl获取xml文件中的值并产生相应链接

    我想实现的效果如下:
    按此在新窗口浏览图片

    原文地址:http://www.youku.com/v_olist/c_97_a_大陆_fc__fe__s__g_都市_r_2010_d_1_fv_0_fl__o_7.html

    下面是我建立的4个筛选字段:
    VideoType        视频类型 (多选)     在第一行显示
    Country             国家地区  (单选)   在第二行显示
    ReleaseYear     上映年份 (单选)      在第三行显示
    Initials               首写字母 (单选)    在第四行显示
    我想实现的链接模式为:
    /Index.aspx?VideoType=0&Country=0&ReleaseYear=0&Initials=0
    (这里的VideoType=0 Country=0 ReleaseYear=0  Initials=0 中的 0是根据xml文件中的id来变化  )
    链接规律为:当点击其中一行后(如第一行),点击另一行时(如第二行)上一行获取的id不变,仅此行获取的id变化(第一行获取的id不变),以此类推.

    我使用的是动易的cms sf3.5  sql2000+net2.0

    下面我自己建立了4个文件,师兄们有用到的部分可以把代码直接拷贝过去使用,这样就给您节省下写代码的时间了,在此先感谢各个热心的师兄们,学弟在这里给你带上一份祝福:祝中秋节快乐,祝您身体健康,事事顺利.

    我建立了2个xml文件 (由于选项(name)过多,我省略对了一部分,不影响功能的实现)

    xml数据部分:dianshiju.xml

    <CATALOG>
    <VideoType category="1">
    <item><name>全部</name><id>0</id></item>
    <item><name>爱情</name><id>1</id></item>
    <item><name>财经</name><id>2</id></item>
    </VideoType>
    <Country category="2">
    <item><name>全部</name><id>0</id></item>
    <item><name>澳大利亚</name><id>1</id></item>
    <item><name>大陆</name><id>2</id></item>
    </Country>
    <ReleaseYear category="3">
    <item><name>全部</name><id>0</id></item>
    <item><name>2010</name><id>2010</id></item>
    <item><name>2009</name><id>2009</id></item>
    </ReleaseYear>
    <Initials category="4">
    <item><name>全部</name><id>0</id></item>
    <item><name>A</name><id>1</id></item>
    <item><name>B</name><id>2</id></item>
    </Initials>
    </CATALOG>

    xml数据链接部分:dianshiju_y.xml (<ModelID>103</ModelID>这里我选择的模型是相同的,也可以变化)

    <NewDataSet>
    <table>
    <ModelID>103</ModelID>
    <Field>
      <ArrayOfFieldInfo>
       <FieldInfo Id="VideoType" name="视频类型" OrderId="1">
         <Settings>
         <string>
      全部|0$$$爱情|1$$$财经|2$$$短片|3
    </string>
        </Settings>
       </FieldInfo>
      </ArrayOfFieldInfo>
    </Field>
    </table>
    <table>
    <ModelID>103</ModelID>
    <Field>
      <ArrayOfFieldInfo>
       <FieldInfo Id="Country" name="国家地区" OrderId="2">
         <Settings>
         <string>
         全部|0$$$澳大利亚|1$$$大陆|2
         </string>
        </Settings>
       </FieldInfo>
      </ArrayOfFieldInfo>
    </Field>
    </table>

      <table>
    <ModelID>103</ModelID>
    <Field>
      <ArrayOfFieldInfo>
       <FieldInfo Id="ReleaseYear" name="上映年份" OrderId="3">
         <Settings>
         <string>
         全部|0$$$2010|2010$$$2009|2009
         </string>
        </Settings>
       </FieldInfo>
      </ArrayOfFieldInfo>
    </Field>
    </table>

       <table>
    <ModelID>103</ModelID>
    <Field>
      <ArrayOfFieldInfo>
       <FieldInfo Id="Initials" name="首写字母" OrderId="4">
         <Settings>
         <string>
         全部|0$$$A|1$$$B|2
         </string>
        </Settings>
       </FieldInfo>
      </ArrayOfFieldInfo>
    </Field>
    </table>
    </NewDataSet>

    xsl文件为2个,其中的代码是抄取其他人的不知是否正确.
    第一个xsl文件:
    标签(xml数据源调用上面第二个xml)

    <?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="/">
    <CATALOG>
    <xsl:apply-templates/>
    </CATALOG>
    </xsl:template>
    <xsl:template match="table">
    下面的VideoType这样写不知是否正确
    <VideoType category="{ModelID}">
    <xsl:apply-templates select="Field/ArrayOfFieldInfo/FieldInfo/Settings/string"/>  
    </VideoType>
    </xsl:template>
    以下是我乱添加的
    <xsl:template match="table">
    <Country category="{ModelID}">
    <xsl:apply-templates select="Field/ArrayOfFieldInfo/FieldInfo/Settings/string"/>  
    </Country>
    </xsl:template>
    <xsl:template match="table">
    <ReleaseYear category="{ModelID}">
    <xsl:apply-templates select="Field/ArrayOfFieldInfo/FieldInfo/Settings/string"/>  
    </ReleaseYear>
    </xsl:template>
    <xsl:template match="table">
    <Initials category="{ModelID}">
    <xsl:apply-templates select="Field/ArrayOfFieldInfo/FieldInfo/Settings/string"/>  
    </Initials>
    </xsl:template>
    以上是我乱添加的.
    <xsl:template match="Settings/string">
    <xsl:variable name="v_content" select="."/>

    <xsl:call-template name="f-output-item">
    <xsl:with-param name="p_content" select="$v_content"/>
    </xsl:call-template>
    </xsl:template>
    <xsl:template name="f-output-item">
    <xsl:param name="p_content"/>

    <xsl:if test="normalize-space($p_content) != ''">

    <xsl:choose>
      <xsl:when test="contains($p_content,'$$$')">
       <xsl:variable name="v_sub_content1" select="substring-before($p_content,'$$$')"/>
       <xsl:variable name="v_sub_content2" select="substring-after($p_content,'$$$')"/>

       <item>
        <name>
    <xsl:value-of select="substring-before($v_sub_content1,'|')"/>
    </name>
        <id>
    <xsl:value-of select="substring-after($v_sub_content1,'|')"/>
    </id>
       </item>

       <xsl:call-template name="f-output-item">
        <xsl:with-param name="p_content" select="$v_sub_content2"/>
       </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
       <item>
        <name>
    <xsl:value-of select="substring-before($p_content,'|')"/>
    </name>
        <id>
    <xsl:value-of select="substring-after($p_content,'|')"/>
    </id>
       </item>
      </xsl:otherwise>
    </xsl:choose>

    </xsl:if>

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


    第二个xsl文件:
    标签(xml数据源调用第一个xml),筛选的链接部分,这里我想实现这样的效果:
    /Index.aspx?VideoType=0&Country=0&ReleaseYear=0&Initials=0

    <?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="modeId" />
    <xsl:param name="nodeId" />
    <xsl:param name="videotypeId" />
    <xsl:param name="CountryId" />
    <xsl:param name="ReleaseYearId" />
    <xsl:param name="InitialsId" />
    <xsl:output method="html" />
    <xsl:template match="/">
    以下内容是抄的人家的
    <xsl:for-each select="/CATALOG/edition[@category=$modeId]/item">
    <li id="MenuID_2_{position()-1}">
    <a href="/Category_{$nodeId}/Index.aspx?edition={id}">
    <xsl:value-of select="name"/>
    </a>
    </li>
    </xsl:for-each>
    以上内容是抄的人家的
    </xsl:template>
    </xsl:stylesheet>


    假如有更好的办法,也可以写出来,在此感谢师兄师姐们了.


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/9/23 9:18:00
     
     ehrchina 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:60
      门派:XML.ORG.CN
      注册:2010/9/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ehrchina发送一个短消息 把ehrchina加入好友 查看ehrchina的个人资料 搜索ehrchina在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ehrchina的博客2
    发贴心情 
    zijiding
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/9/24 10:29:00
     
     ehrchina 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:60
      门派:XML.ORG.CN
      注册:2010/9/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ehrchina发送一个短消息 把ehrchina加入好友 查看ehrchina的个人资料 搜索ehrchina在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ehrchina的博客3
    发贴心情 
    zijiding
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/9/24 10:29: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 11:17:34

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

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