首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在XSLT3.0中解决这个问题?(xsl:iterate和xsl:break)

如何在XSLT3.0中解决这个问题?(xsl:iterate和xsl:break)
EN

Stack Overflow用户
提问于 2022-09-25 00:07:25
回答 1查看 28关注 0票数 0

我正在尝试使用XSLT3.0 在https://xsltfiddle.liberty-development.net/这里进行实验。

我发现了一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xsl:break must be the last instruction in the xsl:iterate loop

以下是我的XML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<primes>
   <i>2</i>
   <i>3</i>
   <i>5</i>
   <i>7</i>
   <i>11</i>
   <i>13</i>
</primes>

以下是我的XSLT:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"    
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     
       xmlns:xs="http://www.w3.org/2001/XMLSchema"  
       xmlns:fn="http://www.w3.org/2005/xpath-functions">
   <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
   <xsl:template match="/primes">
      <xsl:iterate select="i">
         <xsl:param name="cnt" select="1"/>
         <xsl:choose>
            <xsl:when test="position()=1">
              &#10; Prime: 2
            </xsl:when>
            <xsl:when test="position() le 5">
              &#10; Prime <xsl:value-of select="."/> Leap: 
              <xsl:value-of select=". - /*//i[$cnt - 1]"/>
            </xsl:when>
            <xsl:otherwise>
               <xsl:break/>
            </xsl:otherwise>
         </xsl:choose>
         <xsl:on-completion>
             Primes are fun.
         </xsl:on-completion>
         <xsl:next-iteration>
            <xsl:with-param name="cnt" select="$cnt+1" as="xs:integer"/>
         </xsl:next-iteration>
      </xsl:iterate>
   </xsl:template>
</xsl:stylesheet>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-25 00:48:53

由于https://www.w3.org/TR/xslt-30/#iterate中规定的规则,你需要。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <xsl:template match="/primes">
      <xsl:iterate select="i">
         <xsl:param name="cnt" select="1"/>
         <xsl:on-completion>
             Primes are fun.
         </xsl:on-completion>
         <xsl:choose>
            <xsl:when test="position()=1">
              &#10; Prime: 2
              <xsl:next-iteration>
                 <xsl:with-param name="cnt" select="$cnt+1" as="xs:integer"/>
              </xsl:next-iteration>
            </xsl:when>
            <xsl:when test="position() le 5">
              &#10; Prime <xsl:value-of select="."/> Leap: 
              <xsl:value-of select=". - /*//i[$cnt - 1]"/>
              <xsl:next-iteration>
                <xsl:with-param name="cnt" select="$cnt+1" as="xs:integer"/>
              </xsl:next-iteration>
            </xsl:when>
            <xsl:otherwise>
               <xsl:break/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:iterate>

不确定你是否需要xsl:iterate在这里。

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

https://stackoverflow.com/questions/73842928

复制
相关文章
XSL、XSLT
(图片来自:https://www.w3school.com.cn/xsl/xsl_for_each.asp)
问问计算机
2021/05/08
1.8K0
XSL、XSLT
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
XSL教程(1)
一个示例: 1.xml: <?xml version=”1.0″?> <?xml-stylesheet type=”text/xsl” href=”cd_catalog.xsl”?>
全栈程序员站长
2022/06/30
3090
XML,XSL,DTD,SCHEMA
XML:(extend mark language)可扩展标记语言,主要是用来进行数据交换的。是一种简单的数据存储语言。它和HTML的区别就是XML重视数据本身,而HTML重视的是显示。我个人觉得XML之所以重要是因为它的具有很强的跨平台性,跨语言性,这意味着我在任何地方都可以使用它,而不用担心环境问题。
the5fire
2019/02/28
8380
wps文档xsl函数使用问题
打开开发工具,wps默认的编程语言是java script,可以切换到vbs 添加如下代码
sofu456
2023/07/25
1910
C#执行XSL转换
xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码: using System; using System.IO; using System.Text; using Syst
菩提树下的杨过
2018/01/24
9160
xsl模版优先级
当一个节点匹配在 XSLT 模板中建立的多个模式(也称为规则)时,处理器就会按照 XSLT 规范中描述的冲突解决指导原则来确定使用哪一个模式。这些指导原则表明,当发生冲突时,会调用优先级最高的模板。然而,确定模板实际优先级的算法还需要附带解释一下。
GhostZhang
2022/08/21
1.4K0
XSL 简单判断指令及多条件判断指令
简单判断指令 <xsl:if>标记主要用来在在模板中设置相应的条件,来达到对XML文档中数据过滤的功能。即在输出树中有条件的插入一定的结构。其标记的格式为: <xsl:if script="" language="" test="条件">标记内容</xsl:if> script表示是否使用脚本程序; language表示脚本程序使用的语言的种类; test属性是该标记最重要的属性,用来设置标记过滤的条件。 只有当test设置的条件成立的时候,XSL处理器才会执行<xsl:if>标记下面的指令,当条件不满足的
Vicsh
2018/05/16
3.1K0
BizTalk 开发小技巧-Custom XSLT复杂mapping的简单实现
BizTalk最强大的就是消息的订阅/发布和消息转换(transform-mapping),与不同的业务系统做对接势必会用到mapping这个强大的工具。BizTalk提供了非常丰富的mapping函数(Functoids),满足你对业务的不同需要,实在不行可以用万能的Scripting这个工具。 但是处理XML消息的真正胸器是XPath和XSLT如果你精通这2种语言那么对于开发XML将事半功倍,当然也是必须要掌握的。 下面用2个小例子说明一下如何在BizTalk mapping过程中使用自定义的XSL
阿新
2018/04/12
1.6K0
BizTalk 开发小技巧-Custom XSLT复杂mapping的简单实现
emmet(Zen coding)帮助文档
葵花宝典终可成,半途而废万事空。 官方地址:http://docs.emmet.io/cheat-sheet/ 我导出了pdf版,需要的同学可以下载: 链接:http://pan.baidu.com/s/1eQ74eSM 密码:laz1 Syntax Child: > nav>ul>li<nav> <ul> <li></li> </ul> </nav> Sibling: + div+p+bq<div></div> <p></p> <blockquote></blockquote> Climb-u
deepcc
2018/05/16
1.9K0
整理在翻译与校对Spring 2.0 Reference时使用DocBook时的技巧与注意点
整理在翻译与校对Spring 2.0 Reference时使用DocBook时的技巧与注意点
阿敏总司令
2019/02/28
1K0
RHEL-6.1/5.4安装Heartbeat-3-0-7有可能碰见的各种错误及解决方法
对于Heartbeat真可谓是错综复杂,过程充满各种曲折的错误,这里像大家列出我在RHEL-6.1/5.4下安装过程中所碰到的一些错误和解决方法以方便友友参考:
星哥玩云
2022/06/30
5970
利用Winrm.vbs绕过白名单限制执行任意代码
winrm.vbs(一个位于system32目录下的具有Windows签名的脚本文件)可以被用来调用用户定义的XSL文件,从而导致任意的、没有签名的代码执行。当用户向winrm.vbs提供'-format:pretty'或者'-format:text'参数时,winrm.vbs将从cscript.exe所在目录读取WsmPty.xsl或Wsmtxt.xsl文件。这意味着若将cscript.exe拷贝到攻击者可以控制的目录下,并将恶意的XSL文件也置于相同路径中,攻击者将可以绕过签名保护而执行任意代码。这个攻击手段和Casey Smith的wmic.exe技术很相像。
FB客服
2018/07/31
1.6K0
java中break与continue区别_brake和break怎么区别
前段时间学Java时,在break与continue上的理解与应用总觉得欠点什么,虽说也能模模糊糊地掌握,可深度总是不够,心里边也总是不那么亮堂。现在学JavaScript时见到一个不错的例子,现在把它总结下。
全栈程序员站长
2022/08/18
3120
添加和使用XSLT扩展函数
当出现错误时,XSLT处理器(Xalan或Saxon)执行当前错误处理程序的error()方法,将消息作为参数发送到该方法。类似地,当发生致命错误或警告时,XSLT处理器会根据需要执行datalError()或Warning()方法。
用户7741497
2022/07/05
4.4K0
Tomcat目录文件列表功能和定制化
先说一下背景。 某天,产品小伙伴过来提了一个需求:能不能把公司的需求文档以列表的方式展示出来,当开发者需要哪个的时候,自己在目录中寻找并点击进入(需要哪个点哪个,so easy),也就不用记录那么多文档url了。 另外说明一下,公司的需求文档是以文件夹和html组织形式部署在tomcat的,版本8,这是前提。 听完需求,格子的脑袋就开始运转起来,这不是分分钟能搞定的事吗,袖子撸起来,说做咱做。
格子Lin
2018/08/27
1.7K0
Tomcat目录文件列表功能和定制化
如何隐藏钩子:rootkit 的管理程序1
--[ 3 - 控制 在这一点上很明显,唯一合理的方法来控制 漏洞是膨胀堆栈,以便崩溃的指针会 落入可以控制的用户态内存区域: msxml6!XEngine::stns+0x6: 6f6
franket
2022/03/21
4.5K2
switch中的continue和break区别[通俗易懂]
今天c程设期末考试,突然有一道选择题是关于switch中的break和continue问题。 若switch外部没有循环,则break和continue没有区别。 若switch外部还有循环, 一. 若break,continue在switch外部,则二者作用的是外部循环。 二. 若break,continue在switch内部,则break作用于switch,continue作用于外部循环。
全栈程序员站长
2022/09/30
9200
Python中break和continue的区别
大部分人总是会搞混break和continue,虽然他们都是结束循环,但是结束的方式并不一样。 break用于结束整个循环。 continue用于结束当前循环。
全栈程序员站长
2022/09/01
5650
Python中break和continue【详细介绍】
break和continue是循环中满足一定条件退出循环的两种不同方式,下面来利用 例子详细讲解一下。python教程也出了很多,都是Python基础教程类的文章,当然中高阶的视频教程也有在个人博客Python自学网上。
python自学网
2022/03/24
1.9K0
Python中break和continue【详细介绍】

相似问题

如何在XSLT3.0中解决这个问题?(<xsl:merge>)

114

如何在XSLT3.0中使用xsl:try和xsl:catch?

12

XSLT3.0 xsl:评估示例

11

在XSLT3.0中,<xsl:on>和<xsl:where>之间的区别是什么?

25

发出xsl:number to count元素XSLT3.0 XSL-FO

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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