首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSL中的网络掩码速记

XSL中的网络掩码速记
EN

Stack Overflow用户
提问于 2014-02-04 00:50:20
回答 2查看 141关注 0票数 1

我遇到了一点麻烦,在那里我正在把网络掩码制作成速记。255.255.255.0 = /24)

我做了很多谷歌搜索,奇怪的是,从来没有人问过如何在XSL中计算这个。

所以我想出了自己的解决方案:为什么不做一大堆的陈述,比如:

代码语言:javascript
运行
复制
<xsl:choose>
    <xsl:when test="'255.255.255.0'">
        <xsl:value-of select="'/24'"/>
    </xsl:when>
    <xsl:when test="'255.255.0.0'">
        <xsl:value-of select="'/16'"/>
    </xsl:when>
    ...

以此类推。然后我意识到。我想我想得太多了。必须有一个解决方案来计算这一点。网络掩码的可能性太多了。有人知道怎么算吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 03:30:44

从理论上讲,这是可能的,但它可能需要非常冗长的代码,特别是在XSLT1.0中。

网络掩码严重依赖位逻辑。这个答案包含在XSLT中。,但不仅如此,您还需要首先标记字符串,这在XSLT1.0中并不容易/很短

然后,您需要验证每个八进制是否正确(即连续的1和连续的0s)。

总之,从代码上看,列出31种情况的代码可能更短,并在某个地方对照自己的小命名模板进行检查。计算速度可能更快,因为字符串标记化将是递归的,比特逻辑也是如此。

票数 1
EN

Stack Overflow用户

发布于 2014-02-04 07:56:35

另一种选择是跳出XSLT,编写并插入扩展函数。事实上,如果存在一个现有的Java静态函数来实现这一点,那么一些XSLT处理器(例如Apache )将允许您直接调用它。这确实意味着放弃一些可移植性,因为您需要确保在运行样式表的任何地方都可以使用相同的扩展,但有时这是最好的解决方案。

不幸的是,我不认为标准的ESXLT扩展函数包含了用于此目的的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21540928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档