首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从XSLT中提取不同层次的值,并用";“分隔。

从XSLT中提取不同层次的值,并用";“分隔。
EN

Stack Overflow用户
提问于 2017-01-16 13:14:48
回答 2查看 146关注 0票数 1

我有以下XML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<bp>
<bp_id>319</bp_id>
<bp_name>HPP</bp_name>
    <contact>
        <id>239764182</id>
        <first_name>abc</first_name>
        <last_name>def</last_name>
        <email>
            <id>1234</id>
            <email_address>xvxn@hddd.com</email_address>
            <is_primary>true</is_primary>
        </email>
        <phone>
            <id>222</id>
            <phone_number>773890814350</phone_number>
            <country_code>1</country_code>
            <display_name>17733338908150</display_name>
            <is_primary>true</is_primary>
            <type_id>1201</type_id>
            <type_code>Office</type_code>
        </phone>
        <bp_contact>
            <is_admin_user>false</is_admin_user>
            <is_company_officer>false</is_company_officer>
            <shared_contact_type_id>3100</shared_contact_type_id>
            <shared_contact_type_description>Direct Contact</shared_contact_type_description>
            <role>
                <role_id>8</role_id>
                <role_name>something</role_name>
                <responsibility>
                    <responsibility_id>3</responsibility_id>
                    <responsibility_name>this &amp; thats</responsibility_name>
                    <is_primary_contact>false</is_primary_contact>
                </responsibility>
                <assignment>
                    <id>1507420</id>
                    <assignment_type_id>2002</assignment_type_id>
                    <abc_ven_number>4225506</abc_ven_number>
                    <department_id>97</department_id>
                    <is_primary_contact>false</is_primary_contact>
                </assignment>
                <assignment>
                    <id>552593</id>
                    <assignment_type_id>2002</assignment_type_id>
                    <abc_ven_number>1048993</abc_ven_number>
                    <department_id>97</department_id>
                    <is_primary_contact>false</is_primary_contact>
                </assignment>
                <assignment>
                    <id>1507391</id>
                    <assignment_type_id>2002</assignment_type_id>
                    <abc_ven_number>4225506</abc_ven_number>
                    <department_id>2</department_id>
                    <is_primary_contact>false</is_primary_contact>
                </assignment>
                <assignment>
                    <id>552551</id>
                    <assignment_type_id>2002</assignment_type_id>
                    <abc_ven_number>1048993</abc_ven_number>
                    <department_id>2</department_id>
                    <is_primary_contact>false</is_primary_contact>
                </assignment>
            </role>
            <address>
                <is_address_owner>true</is_address_owner>
                <id>101227</id>
                <line1>4501 W 47th</line1>
                <city>Chicago</city>
                <postal_code>60632</postal_code>
                <country_code>US</country_code>
                <country_name>UNITED STATES</country_name>
                <subdivision_code>US-IL     </subdivision_code>
                <subdivision_name>Illinois</subdivision_name>
                <validation_status>0</validation_status>
            </address>
        </bp_contact>
    </contact>
    <merch_planning_partnership_tier_id>9801</merch_planning_partnership_tier_id>
    <merch_planning_partnership_tier_name>Basic Partner</merch_planning_partnership_tier_name>
</bp>

对于赋值下的abc_ven_number的多个值,我想要所有级别的abc_ven_number的所有值,并且它们应该用分号分隔。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4225506;1048993;4225506;1048993 -- like this.

下面是我的XSLT

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:stylesheet version="1.0"         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fo="http://www.w3.org/1999/XSL/Format"     xmlns:ns="http://target.com/2012/03/01/canonical/BusinessPartner"> 
<xsl:strip-space elements="*" />
 <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">bp_name,bp_id 
<xsl:for-each select="ns:bp_list/ns:bp">
<xsl:variable name="bp_name" select="normalize-space(ns:bp_name)" />
<xsl:value-of select="normalize-space(ns:contact/ns:bp_contact/ns:role/ns:assignment/ns:gms_vendor_number)"/>
<xsl:text>&#xA;</xsl:text>  
</xsl:for-each></xsl:template>
</xsl:stylesheet>

这样,我只得到了第一个值。我试着用".“但我只需要abc_ven_number,而不是该级别的其他值。

今天是我从事XSLT工作的第一天。

EN

回答 2

Stack Overflow用户

发布于 2017-01-16 13:37:05

这将选择任意位置的所有abc_ven_number元素,并使用;作为分隔符连接它们的文本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:template match="/">
  <xsl:for-each select="//abc_ven_number">
    <xsl:value-of select="."/>
    <xsl:if test="position() != last()">
      <xsl:text>;</xsl:text>
    </xsl:if>
  </xsl:for-each>
</xsl:template>
票数 1
EN

Stack Overflow用户

发布于 2017-01-16 14:01:49

在XSLT 2中,可以使用带有分隔符的xsl:value-of select

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:template match="/">
<xsl:value-of select="descendant::abc_ven_number" separator=";"/>
</xsl:template>

或者,如果您想要分界值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:template match="/">
  <xsl:value-of select="distinct-values(descendant::abc_ven_number)" separator=";"/>
 </xsl:template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41677260

复制
相关文章
LINQ to XML 从逗号分隔值 (CSV) 文件生成 XML 文件
参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx
跟着阿笨一起玩NET
2018/09/19
2.6K0
从网络下载图片,保存,并用 UIImageView 从保存中显示
//从网络下载图片 -(UIImage ) getImageFromURL:(NSString )fileURL { NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage imageWithData:data]; return result; } //将所下载的图片保存到本地
用户8671053
2021/10/29
6570
OpenCV二值分析-从复杂背景提取横纹
这个来自QQ群里面一位网友提问,然后我给它稍微整理一下,然后完成了分析,成功提取了横纹。原图如下:
OpenCV学堂
2021/12/10
8720
OpenCV二值分析-从复杂背景提取横纹
OpenCV二值分析-从复杂背景提取横纹
这个来自QQ群里面一位网友提问,然后我给它稍微整理一下,然后完成了分析,成功提取了横纹。原图如下:
AI算法与图像处理
2021/12/09
1.2K0
OpenCV二值分析-从复杂背景提取横纹
用于从 JSON 响应中提取单个值的 Python 程序
值提取是一个非常流行的编程概念,它用于各种操作。但是,从 JSON 响应中提取值是一个完全不同的概念。它帮助我们构建逻辑并在复杂数据集中定位特定值。本文将介绍可用于从 JSON 响应中提取单个值的各种方法。在开始值提取之前,让我们重点了解 JSON 响应的含义。
很酷的站长
2023/08/11
2160
用于从 JSON 响应中提取单个值的 Python 程序
objective-c 从网络下载图片,保存,并用 UIImageView 从保存中显示
//从网络下载图片 -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage imageWithData:data]; return result; }
用户7108768
2021/10/29
1.3K0
XSL、XSLT
(图片来自:https://www.w3school.com.cn/xsl/xsl_for_each.asp)
问问计算机
2021/05/08
1.8K0
XSL、XSLT
从ceph对象中提取RBD中的指定文件
之前有个想法,是不是有办法找到rbd中的文件与对象的关系,想了很久但是一直觉得文件系统比较复杂,在fs 层的东西对ceph来说是透明的,并且对象大小是4M,而文件很小,可能在fs层进行了合并,应该很难找到对应关系,最近看到小胖有提出这个问题,那么就再次尝试了,现在就是把这个实现方法记录下来 这个提取的作用个人觉得最大的好处就是一个rbd设备,在文件系统层被破坏以后,还能够从rbd提取出文件,我们知道很多情况下设备的文件系统一旦破坏,无法挂载,数据也就无法读取,而如果能从rbd中提取出文件,这就是保证了即使文件系统损坏的情况下,数据至少不丢失
用户2772802
2018/08/06
4.9K0
如何从内存提取LastPass中的账号密码
简介 首先必须要说,这并不是LastPass的exp或者漏洞,这仅仅是通过取证方法提取仍旧保留在内存中数据的方法。之前我阅读《内存取证的艺术》(The Art of Memory Forensics)时,其中有一章节就有讨论从浏览器提取密码的方法。当你使用标准的用户名/密码方式登录一个网页,通常会发送一个包含了你的用户名及密码的post请求,这些都是以明文方式发送(这里不过多讨论SSL,在SSL内部也是明文发送的)。 本文描述如何找到这些post请求并提取信息,当然如果你捕获到浏览器登录,这些方法就很实用。
FB客服
2018/02/09
5.7K0
如何从内存提取LastPass中的账号密码
python:如何从 URL 中快速提取域名?
有时候,我们要从一段很长的 URL 里面提取出域名。例如从https://www.kingname.info/2020/10/02/copy-from-ssh/,我需要获取的是kingname.info。
王图思睿
2021/06/16
9.1K0
CSV逗号分隔值格式文件(示例分析)
CSV全称Comma Separated Values是"逗号分隔值"的英文缩写.通常是纯文本文件,可以被文本编辑软件,Excel或WPS表格打开. 基本规则 开头不留空,以行为单位; 列名(标题)放在第一行(可忽略不加列名); 每一行数据以换行结束,无空行; 以半角逗号作分隔符,列为空也要表达其存在; 列内容如存在半角逗号则用半角引号("")将该字段值包含起来; 列内容如存在半角引号则需要使用半角双引号("")转义,并用半角引号("")将该字段值包含起来; 文件读写时引号,逗号操作规则互逆; 内码格式不限
Qt君
2019/07/15
3.5K0
不同页面传值
小程序页面传值,点击不同的页面反馈不一样对应页面 url传参 A页面:需要添加一些需传的值, <swiper indicator-dots='true' autoplay='true' interval='5000' duration='1000'   catchtap='onSwiperTap'> <swiper-item ><image src='/image/new-pic1.jpg' data-newsid='0' ></image></swiper-item> <swiper-item><imag
十月梦想
2018/08/29
1.8K0
从函数到包的Python代码层次
Python是一门脚本语言,新建一个.py文件,写点代码,就可以跑起来了,无论放哪都可以。比如where.py文件:
dongfanger
2020/12/16
6370
从函数到包的Python代码层次
如何从 Debian 系统中的 DEB 包中提取文件?
DEB 包是 Debian 系统中常见的软件包格式,用于安装和管理软件。有时候,您可能需要从 DEB 包中提取特定的文件,以便查看其内容、修改或进行其他操作。本文将详细介绍如何从 Debian 系统中的 DEB 包中提取文件,并提供相应的示例。
网络技术联盟站
2023/06/08
3.5K0
如何从 Debian 系统中的 DEB 包中提取文件?
32 - 连接列表中的分隔符
1. 如何将列表中的元素(字符串类型的值)连接在一起(首位相接) a = ['a', 'b', 'c', 'd', 'e'] s = '+' print(s.join(a)) a+b+c+d+e 2. 字符串的join 方法的作用是什么,使用join 应该注意什么,请举例说明 join 方法可以将列表中的字符串类型元素连接起来。并且可以指定元素值直接的分隔符 dirs = '', 'use', 'local', 'xxx', '' print(dirs) path = '/'.join(dirs) prin
ruochen
2021/05/23
1.2K0
32 - 连接列表中的分隔符
执行XSLT转换
XSLT(Extensible StyleSheet Language Transformations,可扩展样式表语言转换)是一种基于XML的语言,用于描述如何将给定的XML文档转换为另一个XML或其他“人类可读”的文档。可以使用%XML.XSLT和%XML.XSLT2包中的类来执行XSLT 1.0和2.0转换。
用户7741497
2022/07/05
3.4K0
详解ERP中的计划层次!
导读:ERP有五个计划层次,即:经营规划、销售与运作规划(生产规划)、主生产计划、物料需求计划、车间作业控制(或生产作业控制)。采购作业也属于第5个层次,但它不涉及企业本身的能力资源。
用户5495712
2019/08/29
2K0
详解ERP中的计划层次!
Excel里很麻烦的事:提取最左/右两侧不同且有重复分隔符之间的文本?Power Query帮你快速搞定!
- 问题 - 按最左和最右侧不同字符 提取中间文本(下图红色部分)? 这些字符可能会有重复 - PQ解法 - 两步走,轻松搞定 可调换步骤顺序 Step 01 先提取最左侧字符右侧文本 Step 02 再提取最右侧字符左侧文本 注意选择”从输入的末尾“扫描分隔符
大海Power
2021/08/30
8660
点击加载更多

相似问题

从txt文件中提取JSON值,并用逗号分隔它们

21

从Flutter中的列表中提取数字并用逗号分隔

3175

提取方括号中的数字,并用逗号分隔

10

从XSLT中的变量中提取特定值

11

如何从URL中提取不同层次的网址?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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