前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP ABAP实用技巧介绍系列之 使用XSLT替换xml中指定node的value

SAP ABAP实用技巧介绍系列之 使用XSLT替换xml中指定node的value

作者头像
Jerry Wang
发布2019-07-08 18:12:08
1.4K0
发布2019-07-08 18:12:08
举报

Created by Jerry Wang, last modified on Jun 30, 2014

用于测试的xml:

代码语言:javascript
复制
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>

需求是将xml 文件中所有名为title的node的value替换成一个hard code value. xslt program:

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
xmlns:sap="http://www.sap.com/sapxsl"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="UTF-8" indent="no" method="xml" omit-xml-declaration="yes" version="1.0"/>
<xsl:template match="/">
 <catalog>
    <xsl:for-each select="catalog/cd">
    <cd>
      <xsl:for-each select="./*">
       <xsl:choose>
         <xsl:when test="name()='title'">
         <xsl:copy>
         <xsl:value-of select="'replaced!!!!'"/>
         </xsl:copy>
         </xsl:when>
         <xsl:otherwise>
           <xsl:copy>
              <xsl:value-of select="."/>
           </xsl:copy>
         </xsl:otherwise>
       </xsl:choose>
      </xsl:for-each>
    </cd>
    </xsl:for-each>
</catalog>
</xsl:template>
</xsl:stylesheet>

测试结果:

clipboard1
clipboard1

如果原始的xml里存在不需要替换值的xml node:

clipboard2
clipboard2

只需要添加一对应的for each即可:

clipboard3
clipboard3

注意:若xml 源文件里节点名称包含namespace:

clipboard4
clipboard4

则这些namespace必须显式定义在xslt中,同时在使用node 名称匹配时也需要加上namespace前缀:

clipboard5
clipboard5
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang, last modified on Jun 30, 2014
相关产品与服务
云硬盘
云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档