新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国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将子网掩码转换为IP形式 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3783 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 通过xslt将子网掩码转换为IP形式 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     自由风 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:154
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给自由风发送一个短消息 把自由风加入好友 查看自由风的个人资料 搜索自由风在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看自由风的博客楼主
    发贴心情 通过xslt将子网掩码转换为IP形式

    将<pe_static_route>10.10.41.0/25</pe_static_route>
    中的子网掩码25转换成IP形式,及:255.255.255.128;
    也就是说25代表25个1,及:11111111.11111111.1111111.10000000转换成10进制就是:255.255.255.128;
    目前的问题是25是一变量,请教各位高手这样子的转换template怎么写?

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/20 11:57:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客2
    发贴心情 
    用/n后的n值 div 8取整就知道有 i 组11111111,这就得到 i 个255和 4-i 组8位二进制数,有多少组有1和0的也就能计算出来了,全0的不用转换,只须转换有1和0的一组。二进制转十进制不用偶教你了吧。

    现在没时间,只能给你个思路,有时间再写代码吧。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/22 12:33:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客3
    发贴心情 
    代码中2进制转10进制本来是用递归的,但是想想要用两个模板嵌套就晕了,直接用<xsl:when>来实现这个功能了,长了很多,不喜欢就自己改递归吧。
    <?xml version="1.0" encoding="gb2312"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

    <xsl:template match="pe_static_route">
     <xsl:value-of select="."/><br/>
     <xsl:variable name="len" select="substring-after(.,'/')"/>
     <xsl:variable name="n" select="floor($len div 8)"/>
     <xsl:variable name="i" select="$len - $n*8"/>

     <xsl:variable name="N1">
      <xsl:choose>
      <xsl:when test="$i>=1"><xsl:value-of select="2*2*2*2*2*2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N2">
      <xsl:choose>
      <xsl:when test="$i>=2"><xsl:value-of select="2*2*2*2*2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N3">
      <xsl:choose>
      <xsl:when test="$i>=3"><xsl:value-of select="2*2*2*2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N4">
      <xsl:choose>
      <xsl:when test="$i>=4"><xsl:value-of select="2*2*2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N5">
      <xsl:choose>
      <xsl:when test="$i>=5"><xsl:value-of select="2*2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N6">
      <xsl:choose>
      <xsl:when test="$i>=6"><xsl:value-of select="2*2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:variable name="N7">
      <xsl:choose>
      <xsl:when test="$i>=7"><xsl:value-of select="2"/></xsl:when>
      <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>

     <xsl:variable name="N" select="$N1+$N2+$N3+$N4+$N5+$N6+$N7"/>

     <font color="red">
     <xsl:choose>
     <xsl:when test="$n=3">255.255.255.<xsl:value-of select="$N"/></xsl:when>
     <xsl:when test="$n=2">255.255.<xsl:value-of select="$N"/>.0</xsl:when>
     <xsl:when test="$n=1">255.<xsl:value-of select="$N"/>.0.0</xsl:when>
     </xsl:choose>
     </font>
     <br/><br/>

    </xsl:template>

    </xsl:stylesheet>


    用递归主要是进行循环计数,相关的递归代码你可以上偶的BLOG看看。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/22 18:50:00
     
     自由风 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:154
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给自由风发送一个短消息 把自由风加入好友 查看自由风的个人资料 搜索自由风在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看自由风的博客4
    发贴心情 
    太感谢Qr大哥了
    前几天着急用,我自己用最笨的办法弄了一个判断如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <ip_mask>
     <xsl:variable name="mask">
      <xsl:value-of select="ip_mask"/>
     </xsl:variable>
     <xsl:variable name="mask0">
      <xsl:value-of select="number($mask)"/>
     </xsl:variable>
     <xsl:variable name="mask1">
      <xsl:value-of select="floor(($mask0)div(8))"/>
     </xsl:variable>
     <xsl:variable name="mask2">
      <xsl:value-of select="($mask0)mod(8)"/>
     </xsl:variable>
     <xsl:choose>
      <xsl:when test="$mask1=0">
       <xsl:choose>
        <xsl:when test="$mask2=0">0.0.0.0</xsl:when>
        <xsl:when test="$mask2=1">128.0.0.0</xsl:when>
        <xsl:when test="$mask2=2">192.0.0.0</xsl:when>
        <xsl:when test="$mask2=3">224.0.0.0</xsl:when>
        <xsl:when test="$mask2=4">240.0.0.0</xsl:when>
        <xsl:when test="$mask2=5">248.0.0.0</xsl:when>
        <xsl:when test="$mask2=6">252.0.0.0</xsl:when>
        <xsl:when test="$mask2=7">254.0.0.0</xsl:when>
       </xsl:choose>
      </xsl:when>
      <xsl:when test="$mask1=1">
       <xsl:choose>
        <xsl:when test="$mask2=0">255.0.0.0</xsl:when>
        <xsl:when test="$mask2=1">255.128.0.0</xsl:when>
        <xsl:when test="$mask2=2">255.192.0.0</xsl:when>
        <xsl:when test="$mask2=3">255.224.0.0</xsl:when>
        <xsl:when test="$mask2=4">255.240.0.0</xsl:when>
        <xsl:when test="$mask2=5">255.248.0.0</xsl:when>
        <xsl:when test="$mask2=6">255.252.0.0</xsl:when>
        <xsl:when test="$mask2=7">255.254.0.0</xsl:when>
       </xsl:choose>
      </xsl:when>
      <xsl:when test="$mask1=2">
       <xsl:choose>
        <xsl:when test="$mask2=0">255.255.0.0</xsl:when>
        <xsl:when test="$mask2=1">255.255.128.0</xsl:when>
        <xsl:when test="$mask2=2">255.255.192.0</xsl:when>
        <xsl:when test="$mask2=3">255.255.224.0</xsl:when>
        <xsl:when test="$mask2=4">255.255.240.0</xsl:when>
        <xsl:when test="$mask2=5">255.255.248.0</xsl:when>
        <xsl:when test="$mask2=6">255.255.252.0</xsl:when>
        <xsl:when test="$mask2=7">255.255.254.0</xsl:when>
       </xsl:choose>
      </xsl:when>
      <xsl:when test="$mask1=3">
       <xsl:choose>
        <xsl:when test="$mask2=0">255.255.255.0</xsl:when>
        <xsl:when test="$mask2=1">255.255.255.128</xsl:when>
        <xsl:when test="$mask2=2">255.255.255.192</xsl:when>
        <xsl:when test="$mask2=3">255.255.255.224</xsl:when>
        <xsl:when test="$mask2=4">255.255.255.240</xsl:when>
        <xsl:when test="$mask2=5">255.255.255.248</xsl:when>
        <xsl:when test="$mask2=6">255.255.255.252</xsl:when>
        <xsl:when test="$mask2=7">255.255.255.254</xsl:when>
       </xsl:choose>
      </xsl:when>
     </xsl:choose>
    </ip_mask>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/17 16:23: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/1 1:27:04

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

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