`
crowson
  • 浏览: 10045 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XSL中几个封装的函数---布尔操作函数

XSL 
阅读更多
<!-- ======================================================== -->     
<!-- Function: BooleanOR(<value1>,<value2>) => number -->     
<!-- Parameters:- -->     <!-- <value1> - the first number to be ORed -->     
<!-- <value2> - the second number to be ORed -->     
<!-- NB. Only works with unsigned ints! -->     
<xsl:template name="BooleanOR">      
<xsl:param name="value1" select="number(0)"/>      
<xsl:param name="value2" select="number(0)"/>      
<!-- recurse parameters -->      
<xsl:param name="bitval" select="number(2147483648)"/>      
<xsl:param name="accum" select="number(0)"/>      
<!-- calc bits present on values -->      
<xsl:variable name="bit1" select="floor($value1 div $bitval)"/>      
<xsl:variable name="bit2" select="floor($value2 div $bitval)"/>      
<!-- do the OR on the bits -->      
<xsl:variable name="thisbit">      
<xsl:choose>      
<xsl:when test="($bit1 != 0) or ($bit2 != 0)">
<xsl:value-of select="$bitval"/>
</xsl:when>      
<xsl:otherwise>0</xsl:otherwise>      
</xsl:choose>      
</xsl:variable>      
<!-- if last recurse then output the value -->      
<xsl:choose>      
<xsl:when test="$bitval = 1">
<xsl:value-of select="$accum + $thisbit"/>
</xsl:when>      
<xsl:otherwise>      
<!-- recurse required -->      
<xsl:call-template name="BooleanOR">      
<xsl:with-param name="value1" select="$value1 mod $bitval"/>      
<xsl:with-param name="value2" select="$value2 mod $bitval"/>      
<xsl:with-param name="bitval" select="$bitval div 2"/>      
<xsl:with-param name="accum" select="$accum + $thisbit"/>      
</xsl:call-template>      
</xsl:otherwise>      
</xsl:choose>     
</xsl:template>          
<!-- ======================================================== -->     
<!-- Function: BooleanAND(<value1>,<value2>) => number -->     
<!-- Parameters:- -->     <!-- <value1> - the first number to be ANDed -->     
<!-- <value2> - the second number to be ANDed -->     
<!-- NB. Only works with unsigned ints! -->     
<xsl:template name="BooleanAND">      
<xsl:param name="value1" select="number(0)"/>      
<xsl:param name="value2" select="number(0)"/>      
<!-- recurse parameters -->      
<xsl:param name="bitval" select="number(2147483648)"/>      
<xsl:param name="accum" select="number(0)"/>      
<!-- calc bits present on values -->      
<xsl:variable name="bit1" select="floor($value1 div $bitval)"/>      
<xsl:variable name="bit2" select="floor($value2 div $bitval)"/>      
<!-- do the AND on the bits -->      
<xsl:variable name="thisbit">      
<xsl:choose>      
<xsl:when test="($bit1 != 0) and ($bit2 != 0)">
<xsl:value-of select="$bitval"/></xsl:when>      
<xsl:otherwise>0</xsl:otherwise>      
</xsl:choose>     
</xsl:variable>      
<!-- if last recurse then output the value -->      
<xsl:choose>      
<xsl:when test="$bitval = 1">
<xsl:value-of select="$accum + $thisbit"/>
</xsl:when>      
<xsl:otherwise>      
<!-- recurse required -->      
<xsl:call-template name="BooleanAND">      
<xsl:with-param name="value1" select="$value1 mod $bitval"/>      
<xsl:with-param name="value2" select="$value2 mod $bitval"/>      
<xsl:with-param name="bitval" select="$bitval div 2"/>      
<xsl:with-param name="accum" select="$accum + $thisbit"/>      
</xsl:call-template>      
</xsl:otherwise>      
</xsl:choose>     
</xsl:template>          
<!-- ======================================================== -->     
<!-- Function: BooleanXOR(<value1>,<value2>) => number -->     
<!-- Parameters:- -->     <!-- <value1> - the first number to be XORed -->     
<!-- <value2> - the second number to be XORed -->     
<!-- NB. Only works with unsigned ints! -->     
<xsl:template name="BooleanXOR">      
<xsl:param name="value1" select="number(0)"/>      
<xsl:param name="value2" select="number(0)"/>      
<!-- recurse parameters -->      
<xsl:param name="bitval" select="number(2147483648)"/>      
<xsl:param name="accum" select="number(0)"/>      
<!-- calc bits present on values -->      
<xsl:variable name="bit1" select="floor($value1 div $bitval)"/>      
<xsl:variable name="bit2" select="floor($value2 div $bitval)"/>      
<!-- do the XOR on the bits -->      
<xsl:variable name="thisbit">      
<xsl:choose>      
<xsl:when test="(($bit1 != 0) and ($bit2 = 0)) or (($bit1 = 0) and ($bit2     != 0))">
<xsl:value-of select="$bitval"/>
</xsl:when>      
<xsl:otherwise>0</xsl:otherwise>      
</xsl:choose>      
</xsl:variable>      
<!-- if last recurse then output the value -->      
<xsl:choose>      
<xsl:when test="$bitval = 1">
<xsl:value-of select="$accum + $thisbit"/>
</xsl:when>      
<xsl:otherwise>      
<!-- recurse required -->      
<xsl:call-template name="BooleanXOR">      
<xsl:with-param name="value1" select="$value1 mod $bitval"/>      
<xsl:with-param name="value2" select="$value2 mod $bitval"/>      
<xsl:with-param name="bitval" select="$bitval div 2"/>      
<xsl:with-param name="accum" select="$accum + $thisbit"/>      
</xsl:call-template>      
</xsl:otherwise>      
</xsl:choose>     
</xsl:template> 

 

分享到:
评论

相关推荐

    jmeter.results.shanhe.me.xsl和jmeter-results-detail-report_21.xsl报告结合

    jmeter.results.shanhe.me.xsl和jmeter-results-detail-report_21.xsl报告结合,在jmeter.results.shanhe.me.xsl的基础上增加summary,解决换行问题

    用 xsl 中的各种函数为 XML 显示提供灵活性

    以下我们将详细探讨如何利用XSL中的各种函数为XML显示提供灵活性。 1. **字符串处理函数**: - `string()`:将值转化为字符串。 - `concat()`:连接多个字符串。 - `substring()`:提取字符串的一部分。 - `...

    XSL-FO 教程

    XSL-FO 简介 XSL-FO 的简介。包括其概念和作用。 XSL-FO 文档 本章将解 XSL-FO 文档的结构。 XSL-FO 区域 本章讲解 XSL-FO 的区域模型(area model)。 XSL-FO 输出 本章讲解 XSL-FO 文档的输出元素(Output ...

    jmeter-results-report.zip|jmeter-results-report_21.xsl

    4个jmeter测试报告模板集合 jmeter.results.shanhe.me.xsl jmeter.results.zyanycall.me.xsl jmeter-results-detail-report_30.xsl jmeter-results-report_21.xsl

    jmeter-results-shanhe-me.xsl报告模板

    jmeter报告样式

    docbook-xsl-1.79.1.tar.bz2

    XSL-Stylesheets Source: DocBook-XSL-1.79.1

    jmeter-results-detail-report_30.xsl

    JMeter报告模板

    jmeter-results-detail-report_21.xsl

    jmeter测试报告模板jmeter-results-detail-report_21.xsl

    docbook-style-xsl.zip

    在这个案例中,“docbook-style-xsl-1.75.2-6.el6.noarch.rpm”是DocBook样式XSL转换器的一个特定版本,适用于RPM支持的系统,如CentOS 6,而且是“noarch”的,意味着它不依赖特定的处理器架构,可以在任何兼容的...

    jmeter-results-detail-report_21接口测试报告优化-展示具体的请求及返回值

    在实际操作中,优化JMeter测试报告可能会包括以下几个方面: 1. **定制报告格式**:使用XSLT(可扩展样式表语言转换)来定制报告的布局和显示,使关键信息更加突出。 2. **增加可视化元素**:通过图表和图形来展示...

    jmeter-results-shanhe-me.xsl

    在实际操作中,可能需要结合JMeter的脚本、测试计划以及测试执行后的数据,通过这个XSL模板生成具有洞察力的性能测试报告。对于进行性能优化和故障排查的IT专业人员来说,理解并能够自定义这种模板是非常有价值的...

    XSL 官方文档

    XPath函数参考.doc可能包含了XPath的各种内置函数,如字符串函数、数值函数、布尔函数、节点集函数等,这些函数能够帮助处理和操作XML数据。例如,`string()`用于获取节点的文本内容,`count()`计算节点集合的元素...

    xml+xsl中分割字符

    在XML与XSL技术的结合应用中,对字符串进行分割处理是一项常见的需求,尤其是在需要将一个包含多个值的属性或元素拆分为多个单独元素时。本文将深入探讨如何利用XSLT中的`substring-before()`和`substring-after()`...

    docbook-style-xsl-1.75.2-6.el6.noarch.rpm

    docbook-style-xsl-1.75.2-6.el6.noarch.rpm

    Jmeter报告模板文件-jmeter-results-shanhe-me-xsl

    update 内容:1、用例搜索功能;2、Json缩进展示,对数据查找一目了然;3、页面顶部添加了项目相关信息(项目名称、版本号好展示等等)

    【学习 XSL-FO】.pdf

    XSL-FO文档的结构和内容主要围绕以下几个核心概念: 1. **XSL-FO文档**:这些文档包含了输出信息,定义了XML数据的布局和样式。例如,它可以指定文本的字体、颜色、大小,以及页面的布局和分页等。 2. **XSL-FO...

Global site tag (gtag.js) - Google Analytics