Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >XSL将已修改属性的最小/最大值提取到变量中

XSL将已修改属性的最小/最大值提取到变量中
EN

Stack Overflow用户
提问于 2013-06-27 09:01:26
回答 2查看 702关注 0票数 0

我想找到一个“更好”的解决方案来获得属性的最小值和最大值,并将它们保存到可访问的变量中。我也很想摆脱for-each循环。那件事怎么可能?

我的XML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Rows>
  <Entry value1="16,423" value2="18,123" />
  <Entry value1="423" value2="11,588" />
  <Entry value1="1,168" value2="521" />
</Rows>

和我的XSL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:for-each select="Rows/Entry/@value1|Rows/Entry/@value2">
  <xsl:sort select="." data-type="number" />
  <xsl:choose>
    <xsl:when test="position() = 1">
      <xsl:variable name="min" select="format-number(translate(.,',',''),'#')" />
    </xsl:when>
    <xsl:when test="position() = last()">
      <xsl:variable name="max" select="format-number(translate(.,',',''),'#')" />
    </xsl:when>
  </xsl:choose>
</xsl:for-each>

所需的输出应该是数字形式的$min=423和$max=18123,并且可以在for-each循环之外访问

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 09:40:13

从2007年开始就有了XSLT2.0(由像Saxon9、AltovaXML、XmlPrime这样的XSLT处理器实现),您可以简单地这样做(假设您在xsl:stylesheet元素上有xmlns:xs="http://www.w3.org/2001/XMLSchema"声明):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:variable name="min" select="min(Rows/Entry/(@value1, @value2)/xs:decimal(translate(., ',', ''))"/>
<xsl:variable name="max" select="max(Rows/Entry/(@value1, @value2)/xs:decimal(translate(., ',', ''))"/>

如果你真的想在一个变量中存储格式化的字符串,你当然也可以这样做,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:variable name="min" select="format-number(min(Rows/Entry/(@value1, @value2)/xs:decimal(translate(., ',', '')), '#')"/>
<xsl:variable name="max" select="format-number(max(Rows/Entry/(@value1, @value2)/xs:decimal(translate(., ',', '')), '#')"/>

至于XSLT1.0,我认为使用for-each进行排序是正确的方法,但是您需要将xsl:variable放到for-each之外,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:variable name="min">
 <xsl:for-each select="Rows/Entry/@value1|Rows/Entry/@value2">
  <xsl:sort select="translate(., ',', '')" data-type="number"/>
  <xsl:if test="position() = 1">
    <xsl:value-of select="format-number(., '#')"/>
  </xsl:if>
 </xsl:for-each>
</xsl:variable>

<xsl:variable name="max">
  <xsl:for-each select="Rows/Entry/@value1|Rows/Entry/@value2">
   <xsl:sort select="translate(., ',', '')" data-type="number"/>
   <xsl:if test="position() = last()">
      <xsl:value-of select="format-number(.,'#')" />
   </xsl:if>
  </xsl:for-each>
</xsl:variable>

作为另一种选择,您可以用apply-templates替换for-each,然后编写一个与@value1 | @value2匹配的模板,但是虽然我认为大多数转换节点的任务在XSLT中使用push样式更好,但我认为对于查找最小值或最大值,for-each是很好的。

票数 2
EN

Stack Overflow用户

发布于 2013-06-27 09:27:35

我不确定它是否是绝对正确的,但我尝试了一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(/Rows/Entry/@value1|/Rows/Entry/@value2)[not((/Rows/Entry/@value1|/Rows/Entry/@value2) &lt; .)]

这是给麦克斯的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(/Rows/Entry/@value1|/Rows/Entry/@value2)[not((/Rows/Entry/@value1|/Rows/Entry/@value2) &gt; .)]

它给了我你提到的价值。但为了简化起见,我使用不带",“的值的xml。

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

https://stackoverflow.com/questions/17338915

复制
相关文章
Java 查找 List 中的最大值、最小值Java 查找 List 中的最大值、最小值
Java 查找 List 中的最大值、最小值 java> List<Long> list = new ArrayList(); java.util.List<java.lang.Long> list = [] java> list.add(1L) java.lang.Boolean res1 = true java> list.add(2L) java.lang.Boolean res2 = true java> Collections.max(list) java.lang.Long res3 = 2 j
一个会写诗的程序员
2018/08/17
3.9K0
oracle修改sequence最大最小值_oracle取最大值的记录
序列是oracle提供的用于生成一系列唯一数字的数据库对象,序列会自动生成顺序递增的序列号,以实现自动提供唯一的主键值,系列可以在多个用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。
全栈程序员站长
2022/11/02
2.6K0
js获取数组中的最大值最小值
遍历方法: var tmp = [1,12,8,5]; var max = tmp[0]; for(var i=1;i<tmp.length;i++){ if(max<tmp[i])max=tmp[i]; } console.log(max); 使用apply方法: var a = [1,2,3,5]; console.log(Math.max.apply(null, a));//最大值 console.log(Math.min.apply(null, a));//最小值 多维数组可以这
deepcc
2018/05/16
36.5K0
XSL
  1、<xsl:import>、<xsl:include>、<xsl:apply-imports>元素   <xsl:import>与<xsl:include>相比,两者都须是<xsl:stylesheet>的子结点,但前者定义的模板规则优先级比较低,且必须为第一个子结点。两者的功能是相同的,都是将另一个定义好的XSL文件装入到当前XSL文件中来。   装来的模板规则,由<xsl:apply-imports>指定何时何地使用。   它们的语法分别是:
全栈程序员站长
2022/07/04
1.1K0
Python property属性 - 将方法转化为变量的故事
为什么需要m和n的数字,首先需要知道例如mysql的分页查询的sql:select * from table_name limit m,n
Devops海洋的渔夫
2019/06/02
7480
XSL、XSLT
(图片来自:https://www.w3school.com.cn/xsl/xsl_for_each.asp)
问问计算机
2021/05/08
1.8K0
XSL、XSLT
java integer最大值_java int型最大值/最小值,最大值+1,最小值-1
java中,int型变量是有符号整形变量。int型变量占用4个字节(32bit位)。
全栈程序员站长
2022/10/04
2K0
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
直接修改 指针变量 的值 , 就是为其赋值一个地址值 , 使用 & 取地址符 , 将变量地址赋值给指针变量 , 或者使用 malloc 函数分配内存赋值给 指针变量 ;
韩曙亮
2023/03/29
21.4K0
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
Javascript获取数组中的最大值和最小值的方法汇总
比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧 比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,下面来介绍如下几种方法,代码如下: 方法一: //最小值 Array.prototype.min = function() { var min = this[0]; var len = this.length; for (var i = 1; i < len; i++){ if (this
前朝楚水
2018/04/02
7.5K0
XSL教程(1)
一个示例: 1.xml: <?xml version=”1.0″?> <?xml-stylesheet type=”text/xsl” href=”cd_catalog.xsl”?>
全栈程序员站长
2022/06/30
3100
Java int 最大值 最小值
从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量:
week
2018/12/12
4.8K0
05:最大值和最小值的差
05:最大值和最小值的差 总时间限制:1000ms内存限制:65536kB描述 输出一个整数序列中最大的数和最小的数的差。 输入第一行为M,表示整数个数,整数个数不会大于10000; 第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。输出输出M个数中最大值和最小值的差。样例输入 5 2 5 7 4 2 样例输出 5 #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> u
attack
2018/04/03
2.8K0
python将获取到的数据保存到文本
1.代码中json_str为获取到的json数据,数据类型为dic(不直接使用con的原因是它不能设置ensure_ascii和indent的值)
句小芒
2022/12/29
1.1K0
mysql高级语法(求和 平均 最大值 最小)
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
逍遥子大表哥
2021/12/18
2.7K0
mysql高级语法(求和 平均 最大值 最小)
XML,XSL,DTD,SCHEMA
XML:(extend mark language)可扩展标记语言,主要是用来进行数据交换的。是一种简单的数据存储语言。它和HTML的区别就是XML重视数据本身,而HTML重视的是显示。我个人觉得XML之所以重要是因为它的具有很强的跨平台性,跨语言性,这意味着我在任何地方都可以使用它,而不用担心环境问题。
the5fire
2019/02/28
8390
python 字典最大值、最小值、排序
prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75 }
用户5760343
2019/09/25
1.7K0
java获取数组最大值索引_java数组最大值最小值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/29
2.6K0
Java中获取一个数组的最大值和最小值
3,然后对数组进行遍历循环,若循环到的元素比最大值还要大,则将这个元素赋值给最大值;同理,若循环到的元素比最小值还要小,则将这个元素赋值给最小值;
程序员的时光001
2020/07/14
6.4K0
一个数组中找最大值和最小值
这个不是lintcode里的题目,但是感觉很经典,放在这里。 给定一个数组,在这个数组中找到最大值和最小值。 最近在看一点算法书,看到分治法经典的金块问题,实质就是在一个数组中找到最大值和最小值的问题。 我们用分治法来做,先把数据都分成两两一组,如果是奇数个数据就剩余一个一组。 如果是偶数个数据,就是两两一组,第一组比较大小,分别设置为max和min,第二组来了自己本身内部比较大小,用大的和max进行比较,决定是否更新max,小的同样处理,以此类推。 如果是奇数个数据,就把min和max都设为单个的那个数据,其他的类似上面处理。 书上说可以证明,这个是在数组中(乱序)找最大值和最小值的算法之中,比较次数最少的算法。 瞄了一眼书上的写法,还是很简单的,一遍过。
和蔼的zhxing
2018/09/04
2.6K0
算法创作|求任意N个整数中的最大值和最小值
解决这个问题有三种常见思路,第一种思路比较简单粗暴,就是对用户输入的每个整数两两之间进行比较,直到找到最大的整数和最小的整数为止。第二种思路是将用户输入的整数放入一个空列表中,然后利用Python内置的max()函数和min()函数分别得到最大值和最小值。第三种思路与第二种思路类似,也是将用户输入的整数放入一个空列表,然后对列表进行排序,列表下标为0的数即为最小值,列表下标为N-1的数即为最大值。接下来让我们来演示一下第三种方法:
算法与编程之美
2021/03/30
2.3K0
算法创作|求任意N个整数中的最大值和最小值

相似问题

将小数部分提取到XSL模板中的变量中

10

将javascript变量放入xsl属性

10

xsl变量值修改

12

如何使用xsl 1.0查找最小和最大值?

25

将.str文件中的孔.xsl内容提取到xsl/txt文件中

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文