连接xsl中的两个字段

2023-12-03

我有一些 xml 字段,我需要将所有字段连接到一个字段中

<fields>
<field name="first"><value>example</value></field>
<field name="last"><value>hello</value></field>
<field name="age"><value>25</value></field>
<field name="enable"><value>1</value></field>
<fields>

我需要如下转换

<fields>
<field name="all"><value>example hello 25 1</value></field>
</field>

使用 XSL 带有空格分隔符


这种简短而简单(没有显式条件指令)的 XSLT 1.0 转换:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
  <fields>
    <field name="all">
      <xsl:variable name="vfieldConcat">
        <xsl:for-each select="field/value">
          <xsl:value-of select="concat(., ' ')"/>
        </xsl:for-each>
      </xsl:variable>
      <value><xsl:value-of select=
         "normalize-space($vfieldConcat)"/></value>
    </field>
  </fields>
 </xsl:template>
</xsl:stylesheet>

当应用于提供的 XML 文档时(已针对格式正确进行更正):

<fields>
    <field name="first">
        <value>example</value>
    </field>
    <field name="last">
        <value>hello</value>
    </field>
    <field name="age">
        <value>25</value>
    </field>
    <field name="enable">
        <value>1</value>
    </field>
</fields>

产生想要的正确结果:

<fields>
   <field name="all">
      <value>example hello 25 1</value>
   </field>
</fields>

二. XSLT 2.0 解决方案

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
  <fields>
    <field name="all">
      <value><xsl:value-of select="field/value"/></value>
    </field>
  </fields>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于同一个 XML 文档(如上)时,会产生相同的正确结果:

<fields>
   <field name="all">
      <value>example hello 25 1</value>
   </field>
</fields>

解释:使用默认值这一事实separator的属性xsl:value-of是一个单独的空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接xsl中的两个字段 的相关文章

随机推荐

  • 如何获取值的类型 (Java)

    我在网上看到的解决方案是有道理的 如果您知道变量的类型 那么您就知道其值的类型 Java 就是这样做的 但是 如果我有一个像这样的继承类系统 DynastyPQ base class FirstPQ inherited class 并以这种
  • 将数字转换为其字符串表示形式

    我正在开发一个简单的网络应用程序 其中我需要以字符串格式向用户显示数字 a Example 12 One Two or Twelve 20 minus Two zero or minus twenty 无论哪种方式都可以 我需要用 PHP
  • 如何从运行 iOS 9 的用户获取崩溃日志

    虽然我们以前能够在以下情况下获取崩溃日志用户与 iTunes Connect 同步 at Library Logs CrashReporter MobileDevice 现在大多数用户不这样做 因此 iOS9上获取崩溃日志的新流程是此处概述
  • Xcode 4.4.1 在 OSX Mavericks 下无法正常工作

    例子 iOS 3 1 3 的组织者显示 摘要丢失 键 它可能会因下一个崩溃数据而崩溃 未捕获异常 NSInternalInconsistencyException 未找到所需密钥 locatorclass 的扩展 Xcode Device
  • Cygwin 不支持 glibc

    Cygwin 常见问题解答包含以下 glibc 在哪里 的信息 Cygwin 不提供 glibc 它使用 newlib 来代替 它提供了很多 但不是全部 相同的功能 将 glibc 移植到 Cygwin 会很困难 我很惊讶并检查了发布包 因
  • RenderTranform 不进行渲染变换

    所以我有一个画布和一个椭圆 并调用一个方法来像这样移动椭圆 public void moveElipse1ToCoordinate Point point Action action gt TranslateTransform moveTo
  • 将 CSS 中的第一个 Div 移动到第二个 Div 下方

    我的 html 代码如下所示 A 包装div 百分比宽度 向左浮动 包含 一个包含文本和链接的 div 一个包含图像的 Div 问题 我想要保持上面的编码顺序 但为了用户体验 我想使用 CSS 反转 div 顺序以获得如下内容 注意 包装器
  • 100%安全的照片上传脚本

    问题很简单 如何用php制作100 安全的照片上传脚本 是否有任何教程可以显示所有可能的安全差距 不要让我看这个问题 因为他们只谈论尺寸 但我想确定的是 没有人可以上传 shell 和其他东西 因为这是一个大网站 需要100 安全的照片上传
  • Google 登录 JavaScript 客户端无法在 PWA 应用上运行

    从昨天开始 当我使用gapi auth2在Android上安装的PWA应用程序上进行Google登录时 该应用程序打开浏览器窗口来选择用户 但它仍然是空白的 Android 上 Chrome 浏览器上的同一页面照常打开用户选择 代码是相同的
  • 使用数组和字典在 Swift 中实现多重映射

    我正在尝试在 Swift 中实现一个基本的多重映射 这是一个相关的 非功能性的 片段 class Multimap
  • ggplot2 中的图例,删除级别

    My data df lt data frame sp c LETTERS 1 8 tr c NS LS NS LS LS HS HS HS bv c 14 5 11 5 6 21 5 4 2 4 8 av c 0 0 14 21 48 4
  • 具有自定义声明的 Firebase 存储规则

    我无法让 Firebase Storage 使用自定义规则和自定义声明 在我的 Python 管理面板中 我执行以下操作来创建用户并分配声明 client id Standard Auth import firebase admin fro
  • 如何在保留对 self 的引用的同时调用变异方法?

    我在借阅检查员那里遇到了麻烦 for item in self xxx iter self modify self but not xxx item 上面的代码有效before我将一些代码重构为modify self but not xxx
  • MySQL:按字母顺序获取多个列中的唯一值

    如果我的表看起来像这样 id colA colB colC 1 red blue yellow 2 orange red red 3 orange blue cyan 我运行什么 SELECT 查询才能返回结果 蓝色 青色 橙色 红色 黄色
  • 在 Node 4.3 中使用 Buffer.from 时出现 TypeError Base64 不是函数

    我正在使用标准 Amazon 系统映像 linux x64 在 Node 4 3 上本地调试 lambda 函数 当我运行该程序时 在将 Base64 字符串解码为 utf 8 的函数中出现错误 错误说 Unhandled rejectio
  • 预检响应具有无效的 HTTP 状态代码:401 角度

    使用 Angular 和 Spring Boot 我们尝试向我们的服务添加身份验证 但由于某种原因 我们无法 打开 并从我们知道有效的 url 中获取数据 角度 this getMismatches function return http
  • Mockito - @Spy 与 @Mock [重复]

    这个问题在这里已经有答案了 我知道间谍调用对象上的真实方法 而模拟调用双对象上的方法 除非有代码味道 否则还应避免间谍 但是 间谍是如何工作的以及我应该何时实际使用它们 它们与模拟有何不同 从技术上讲 模拟 和 间谍 都是一种特殊的 测试替
  • XMLSerialize 和 EXCLUDE 基类

    我希望能够通过 XML 序列化子类 但从序列化中排除其基类 这是我的类 为 DataObjects NET 配置 Serializable HierarchyRoot public class MyClass Entity Field Ke
  • Spring Security 注销会话未失效

    我几乎尝试了在 StackOverflow 和其他地方可以找到的所有方法来使其工作 但仍然不起作用 我正在使用 Spring Framework 4 1 6 RELEASE Spring Security 4 0 0 RELEASE 我配置
  • 连接xsl中的两个字段

    我有一些 xml 字段 我需要将所有字段连接到一个字段中