首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XSLT 1.0 -使用分隔符拆分for-each循环中的字段

XSLT 1.0是一种用于对XML文档进行转换和处理的编程语言。它使用XSLT样式表来定义如何将一个XML文档转换为另一个XML文档、HTML文档或纯文本文档。

在XSLT 1.0中,要使用分隔符拆分for-each循环中的字段,可以使用字符串处理函数和递归来实现。以下是一个示例代码:

代码语言:txt
复制
<xsl:template match="/">
  <xsl:variable name="input" select="'field1,field2,field3'" /> <!-- 输入字段 -->
  <xsl:call-template name="split">
    <xsl:with-param name="input" select="$input" />
  </xsl:call-template>
</xsl:template>

<xsl:template name="split">
  <xsl:param name="input" />
  <xsl:param name="delimiter" select="','" /> <!-- 分隔符,默认为逗号 -->
  
  <xsl:choose>
    <xsl:when test="contains($input, $delimiter)">
      <xsl:variable name="field" select="substring-before($input, $delimiter)" /> <!-- 获取第一个字段 -->
      <xsl:value-of select="$field" />
      <xsl:text> </xsl:text> <!-- 输出字段后添加空格,可以根据需要修改 -->
      
      <xsl:call-template name="split">
        <xsl:with-param name="input" select="substring-after($input, $delimiter)" /> <!-- 递归调用,处理剩余字段 -->
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$input" /> <!-- 输出最后一个字段 -->
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

上述代码中,首先定义了一个名为input的变量,它包含了待拆分的字段。然后通过调用名为split的模板来实现字段的拆分。split模板接受两个参数:input表示待拆分的字段,delimiter表示分隔符,默认为逗号。在模板中,使用contains函数判断字段中是否包含分隔符,如果包含,则使用substring-before函数获取第一个字段,并输出到结果中。然后递归调用split模板,处理剩余的字段。如果不包含分隔符,则说明已经到达最后一个字段,直接输出到结果中。

这种方法可以适用于XSLT 1.0中拆分字段的需求。然而,XSLT 1.0在处理字符串和递归方面的功能相对有限。如果需要更复杂的字符串处理,建议考虑升级到XSLT 2.0或更高版本,或者使用其他编程语言来处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

学习 XSLT:XML文档转换关键

XSLT 将 XML 文档转换为另一个 XML 文档XSLT 使用 XPath 在 XML 文档中导航XSLT = XSL 转换XSLT 是 XSL 中最重要部分。...描述转换过程一种常见方式是说,XSLT 将 XML 源树转换为 XML 结果树。XSLT 使用 XPathXSLT 使用 XPath 在 XML 文档中查找信息。...它是如何工作在转换过程中,XSLT 使用 XPath 定义应与一个或多个预定义模板匹配源文档部分。当找到匹配时,XSLT 将源文档匹配部分转换为结果文档。...通过使用 JavaScript,我们可以:进行浏览器特定测试根据浏览器和用户需求使用不同样式表这就是 XSLT 美妙之处!...XML "field" 元素 "id" 属性值被添加到每个 HTML 输入字段 "id" 和 "name" 属性中。

13010

BizTalk 开发小技巧-Custom XSLT复杂mapping简单实现

但是处理XML消息真正胸器是XPath和XSLT如果你精通这2种语言那么对于开发XML将事半功倍,当然也是必须要掌握。...下面用2个小例子说明一下如何在BizTalk mapping过程中使用自定义XSLT脚本实现复杂mapping。...xml version="1.0" encoding="UTF-16"?...对比使用biztalk mapper产生XSLT和自定义XSLT脚本你会发现系统自动生成脚本有非常多冗余脚本,而直接利用XSLT编写脚本非常简洁,自然执行效率会高出不少。...自定义XSLT脚本对于开发EDI数据对接是最有用,也是最能体现效率地方。如果你项目中有用到EDI数据交换那么不妨试一下通过自定义XSLT脚本来实现mapping。

1.6K70

Web安全 | 带你了解一下XML及其注入相关知识

SGML多用于科技文献和政府办公文件中,SGML非常复杂,其复杂程度对于网络上日常使用简直不可思议。HTML免费、简单,已经获得了广泛支持,方便大众使用。...HTML只是XML子类。 然后认识DTD 文档类型定义(DTD)可定义合法XML文档构建模块。它使用一系列合法元素来定义文档结构。...首先我们来看一下XML与XSLT之间转换 先来看看下面这个XML文件(cdcatalog.xml): <?xmlversion="<em>1.0</em>"encoding="utf-8" ?...system-property()函数 我们可以使用system-property()函数来查看代码库开发者名称,该功能符合XSLT v1.0标准,所有的代码库都实现了这种功能。...我们用上面讲到cdcatalog.xslt文件演示一下: <?xmlversion="<em>1.0</em>"encoding="utf-8"?

3.6K30

Java XML和JSON:Java SE文档处理,第1部分

在XML到来之前,我编写了软件来导入以未记录二进制格式存储数据。我使用调试器来识别数据字段类型,文件偏移量和长度。当XML出现,然后是JSON时,这项技术大大简化了我生活。...第3章还介绍了DOM加载和保存,范围和遍历API。 第6章介绍了如何使用SAXON超越XSLT / XPath 1.0。 第11章是探索杰克逊一个新(冗长)章节。...第6章附录:使用XSLT转换XML文档 使用SAXON超越XSLT / XPath 1.0 Java 11XSLT实现基于Apache Xalan Project,它支持XSLT 1.0和XPath...要访问以后XSLT 2.0+和XPath 2.0+功能,您需要使用SAXON等替代方法覆盖Xalan实现。...编译清单1如下: javac XSLTDemo.java XSLT 2.0示例:对节点进行分组 XSLT 1.0不提供对分组节点内置支持。

6.3K10

Java XML和JSON:Java SE文档处理,第1部分

在XML到来之前,我编写了软件来导入以未记录二进制格式存储数据。我使用调试器来识别数据字段类型,文件偏移量和长度。当XML出现,然后是JSON时,这项技术大大简化了我生活。...第3章还介绍了DOM加载和保存,范围和遍历API。 第6章介绍了如何使用SAXON超越XSLT / XPath 1.0。 第11章是探索杰克逊一个新(冗长)章节。...第6章附录:使用XSLT转换XML文档 使用SAXON超越XSLT / XPath 1.0 Java 11XSLT实现基于Apache Xalan Project,它支持XSLT 1.0和XPath...要访问以后XSLT 2.0+和XPath 2.0+功能,您需要使用SAXON等替代方法覆盖Xalan实现。...编译清单1如下: javac XSLTDemo.java XSLT 2.0示例:对节点进行分组 XSLT 1.0不提供对分组节点内置支持。

5.6K30

XML快速入门学习笔记

冒号会被转换为命名空间来使用 注意事项: XML 文档经常有一个对应数据库,其中字段会对应 XML 文档中元素。有一个实用经验,即使用数据库命名规则来命名 XML 文档中元素。...---- 0x02 样式设置 XML样式 描述:与HTML一样我们可以给XML加上样式,常用方式有两种即使用 CSS / XSLT 样式显示 XML数据; (1) 通过使用 CSS(Cascading...(2) 使用 XSLT 显示 XML XSLT 是首选 XML 样式表语言,XSLT(eXtensible Stylesheet Language Transformations)远比 CSS 更加完善...> WeiyiGeek.xsltxml ---- 0x03 命名空间 描述:在 XML 中,元素名称是由开发者定义,当两个不同文档使用相同元素名时,就会发生命名冲突... WeiyiGeek.xslt 2) XMLDOM操作 (1) 获取元素值 .nodeValue

6.8K30

XML快速入门学习笔记

冒号会被转换为命名空间来使用 注意事项: XML 文档经常有一个对应数据库,其中字段会对应 XML 文档中元素。有一个实用经验,即使用数据库命名规则来命名 XML 文档中元素。...0x02 样式设置 XML样式 描述:与HTML一样我们可以给XML加上样式,常用方式有两种即使用 CSS / XSLT 样式显示 XML数据; (1) 通过使用 CSS(Cascading Style...WeiyiGeek.CSSXML (2) 使用 XSLT 显示 XML XSLT 是首选 XML 样式表语言,XSLT(eXtensible Stylesheet Language Transformations...WeiyiGeek.xsltxml ---- 0x03 命名空间 描述:在 XML 中,元素名称是由开发者定义,当两个不同文档使用相同元素名时,就会发生命名冲突。 ?...WeiyiGeek.默认命名空间 (3) XSLT与命名空间 XSLT 是一种用于把 XML 文档转换为其他格式 XML 语言,比如 HTML。

8.8K20

XML 相关漏洞风险研究

) 也是 W3C 一个建议标准,主要用于对 XML 文档进行结构化拆分和包含,一个典型用法如下: <?...我们可以在 XML 文档中使用 XML 声明(xml-stylesheet)引用该 XSLT,如下所示: 此外 XSLT 支持函数调用,比如: <xsl:value-of...即使在浏览器这么安全软件中也依然忽视了这些 XML 攻击面,另外提一嘴,Chrome 中使用还只是 XSLT 1.0 标准,我们前面看到 XSLT 已经出到了 3.0,其中增加了许多内置函数,有心人如果捡到了新漏洞别忘了也给我分享一下...有不同实现,因此我们在测试 XSLT 之前第一件事就是先确定其实现以及支持版本,XSLT 1.0 标准中定义了 3 个必须实现属性,使用 system-property 函数进行获取: <xsl:

11710

从一个范例看XML应用

在本地SQL Server或者直接在App_Data下新建一个数据库,起名叫SiteDB,然后建一个表Book,字段设定如下: ?...,而在客户端,我们期望接收是一个字符串,虽然我们可以在服务端遍历DataSet中表,然后对其字段值进行处理,比如嵌入一些HTML代码,然后将处理好HTML代码返回。...但是有一种更加“fashion”做法,就是使用XSLT进行转换。为了进行转换,我们首先要获得DataSetXML形式表现,这可以方便地通过在DataSet对象上调用GetXml()方法来获得。...有了这个XSLT样式表,接下来我们就可以在SiteBLL中再添加一个方法: // 使用XSLT将XML转换为XHTML private static string ConvertToXhtml(string...总结 这篇文章为大家演示了一个XML综合应用:使用字符串传递自定义数值、使用XML模式验证XML有效性、使用XSLT将XML转换为XHTML标记,以及使用Asp.Net脚本回调功能实现Ajax效果

3K40

如何隐藏钩子:rootkit 管理程序1

--[ 3.1 - 膨胀堆栈 1:XSLT 递归 膨胀堆栈明显方法是在 堆栈,这应该可以使用任何可用于动态技术 目标应用程序。我第一个想法是为此使用 XSLT 本身。...确实,下面的代码,就是经典Hanoi算法 XSLT实现,将在堆栈上产生大量递归( 作为记录,它甚至可能使用足够大 $n 对浏览器进行 DoS): 遗憾是,基于 XSLT 递归将堆栈膨胀到上方而不是下方 崩溃指针源堆栈帧,因此递归不会 完全影响崩溃上下文...DOMNode::transformNode+0xa6 ... --[ 3.2 - 膨胀堆栈 2:JavaScript 递归 在 XSLT 递归失败后,我转而使用 JavaScript。...80000000 ee ff c0 01 for(var i=1; i<=count; i++) intArr[i] = 0x17151715; 警报(“完成”); 奇怪是,改变喷洒循环中值可能

4.4K390

让你写出更加优秀代码!

贾言 代码评审歪诗 窗外风雪再大 也有我陪伴着你 全文字数:2000字 阅读时间:5分钟 贾言 代码评审歪诗 验幻空越重 命频异长 依轮线日简 接偶正分壮 架构师说, 用20个字描述代码评审内容...命-明 包/类/方法/字段/变量/常量命名要遵循规范,要名副其实,这不但可以增加可读性,还可以在起名过程中引导我们思考方法/变量/类职责是否合适 有意义很重要, 典型无意义命名: ?...-勋 不要在循环中调用服务,不要在循环中做数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,考虑是否会打垮数据库...长-昌 如果一行代码过长,要分解开来;如果一个方法过长,要重构方法;如果一个类过长要考虑拆分类; 依-依 如果调用了外部依赖,一定要搞清楚这个外部依赖可以提供性能指标,最好约定SLA; 轮-伦 不要重复造轮子...接-洁 接口是用来隔离变化,如果一个业务有几种不同形态,但都有相同处理,那么可以定义接口来隔离业务形态不同,在服务调用处,通过业务类型字段来获得不同服务类。

5.4K20

shell 循环命令

例如: for s in I don\'t know if "this'll" work do echo "word:$s" done 1.3 更改字段分隔符 为什么需要更改字段分隔符呢?...如果你需要输出一篇英文文章,英文文章内容自然存在单词间空格,行与行之间换行符,现在如果shell输出内容字段分隔符是空格,那这会存在一个问题,就是输出内容时内容会排成一列,而不是一行一行输出。...造成这个问题原因是特殊环境变量 IFS ,叫作内部字段分隔符(internal field separator)。IFS 环境变量定义了bash shell用作字段分隔符一系列字符。...默认情况下,bash shell会将下列字符当作字段分隔符: 空格 制表符 换行符 如果bash shell在数据中看到以上这些字符中任意一个,它就会假定这表明了列表中一个新数据字段开始。...要解决这个问题,可以在 shell 脚本中临时更改 IFS 环境变量值来限制被 bash shell 当作字段分隔符字符,比如 IFS=$'\n',这样字段分隔符就被更改为换行了。

1.3K20

Java 代码精简之道 (上)

1.2.利用 for-each 语句 从 Java 5 起,提供了 for-each 循环,简化了数组和集合循环遍历。...for-each 循环允许你无需保持传统 for 循环中索引就可以遍历数组,或在使用迭代器时无需在 while 循环中调用 hasNext 方法和 next 方法就可以遍历集合。...{ return true; } } return false; } 1.5.利用 static 关键字 利用 static 关键字,可以把字段变成静态字段...116.178692D, 39.967115D, 116.410778D, 39.899721D); 1.6.利用 lambda 表达式 Java 8 发布以后,lambda 表达式大量替代匿名内部类使用...注意:静态引入容易造成代码阅读困难,所以在实际项目中应该警慎使用。 1.9.利用 unchecked 异常 Java 异常分为两类:Checked 异常和 Unchecked 异常。

31120

京东资深架构师代码评审歪诗

在此之前在和讯网负责股票基金行情系统研发工作,具备高并发、高可用互联网应用研发经验。 贾言验幻空越重, 命频异长。 依轮线日简, 接偶正分壮。言欢空月虫, 明勋品宜昌。...null 使用StringUtils判断字符串非空 越: 如果方法传入数组下标作为参数,要在一开始就做下标越界校验,避免下标越界异常 重: 不要写重复代码,重复代码要使用重构工具提取重构 命频异长...- 明勋品宜昌 命: 包 / 类 / 方法 / 字段 / 变量 / 常量命名要遵循规范,要名副其实, 这不但可以增加可读性,还可以在起名过程中引导我们思考方法 / 变量 / 类职责是否合适...: 不要在循环中调用服务,不要在循环中做数据库等跨网络操作 频: 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,...接偶正分壮 - 洁偶正粉妆 接: 接口是用来隔离变化,如果一个业务有几种不同形态,但都有相同处理,那么可以定义接口来隔离业务形态不同,在服务调用处,通过业务类型字段来获得不同服务类。

4.7K30

使用 Python 拆分文本文件最快方法是什么?

在 Python 中拆分文本文件可以通过多种方式完成,具体取决于文件大小和所需输出格式。在本文中,我们将讨论使用 Python 拆分文本文件最快方法,同时考虑代码性能和可读性。...拆分() 方法 拆分文本文件最直接方法之一是使用 Python 中内置 split() 函数。基于指定分隔符,此函数将字符串拆分为子字符串列表。...接下来,在文件对象上使用 read() 方法将文件全部内容作为单个字符串读入内存。 然后在此字符串上调用 split() 函数,换行符 \n 作为分隔符传递。...然后我们创建一个名为行空列表。接下来,我们使用 for 循环遍历文件对象。 readline() 方法在 for 循环中文件对象上调用,该对象一次从文件中读取一行并将其分配给变量行。...然后对内存映射文件调用 read() 方法,该文件像以前一样将文件全部内容读取到单个字符串中。 然后在此字符串上调用 split() 函数,再次使用换行符 \n 作为分隔符传递。

2.5K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券