首页
学习
活动
专区
工具
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" 属性中。

20510

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): 1.0"encoding="utf-8" ?...system-property()函数 我们可以使用system-property()函数来查看代码库的开发者名称,该功能符合XSLT v1.0标准,所有的代码库都实现了这种功能。...我们用上面讲到的cdcatalog.xslt文件演示一下: 1.0"encoding="utf-8"?

    3.9K30

    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 11的XSLT实现基于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 11的XSLT实现基于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.7K30

    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.xslt的xml ---- 0x03 命名空间 描述:在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突... for-each> WeiyiGeek.xslt 2) XML的DOM操作 (1) 获取元素的值 .nodeValue

    6.8K30

    XML快速入门学习笔记

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

    8.9K20

    XML 相关漏洞风险研究

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

    38410

    从一个范例看XML的应用

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

    3K40

    【Python爬虫实战】高效解析和操作XMLHTML的实用指南

    二、lxml模块的入门使用 lxml 模块是一个非常强大的 Python 库,主要用于解析和操作 XML 和 HTML 文档。它具有高效、易用的特点,并且支持 XPath 和 XSLT 等功能。...三、lxml的深入练习 要深入掌握 lxml 模块,需要了解其高级功能,如更复杂的 XPath 查询、使用 CSS 选择器、处理和转换大型 XML/HTML 文档、以及执行 XSLT 转换等。...,以释放内存 elem.clear() (四)使用 XSLT 转换 lxml 支持使用 XSLT(可扩展样式表语言转换)来转换 XML 文档。...xslt_string = """ 1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 使用 XPath、XSLT 以及 CSS 选择器来处理复杂的数据查询和转换,甚至优化大文件的解析效率。

    12300

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

    --[ 3.1 - 膨胀堆栈 1:XSLT 递归 膨胀堆栈的明显方法是在 堆栈,这应该可以使用任何可用于的动态技术 目标应用程序。我的第一个想法是为此使用 XSLT 本身。...确实,下面的代码,就是经典的Hanoi算法 XSLT 中的实现,将在堆栈上产生大量递归( 作为记录,它甚至可能使用足够大的 $n 对浏览器进行 DoS): 1.0"?..." match="//xxx[position()]" /> 遗憾的是,基于 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.5K390

    让你写出更加优秀的代码!

    贾言 代码评审歪诗 窗外风雪再大 也有我陪伴着你 全文字数: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.4K20

    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 异常。

    33320

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

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

    4.7K30

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

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

    2.6K30
    领券