首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从逗号分隔的字段中提取值,并使用XSLT在目标中填充

从逗号分隔的字段中提取值,并使用XSLT在目标中填充
EN

Stack Overflow用户
提问于 2022-06-09 13:50:20
回答 1查看 63关注 0票数 0

查找XSLT1.0代码,它将像下面这样将输入xml(其中项是重复段)转换为预期输出

代码语言:javascript
复制
<root type="array">
  <item type="object">
    <metadata type="object">
      <GTIN type="string">abcd,efwe,sdsf</GTIN>
    </metadata>
  </item>
  <item type="object">
    <metadata type="object">
      <GTIN type="string">xxx,yyy,zzz</GTIN>
    </metadata>
  </item>
</root>

输出预期XML:

代码语言:javascript
复制
<Assets>
 <Asset ID="X.test" UserTypeID="XAsset">
  <Values>
   <MultiValue AttributeID="GTINList"/>
     <value>abcd</value>
     <value>efwe</value>
    <value>sdsf</value>
  </Values>
 </Asset>
 <Asset ID="X.test" UserTypeID="XAsset">
  <Values>
   <MultiValue AttributeID="GTINList"/>
     <value>xxx</value>
     <value>yyy</value>
    <value>zzz</value>
  </Values>
 </Asset>
</Assets>

在使用嵌套递归模板之后,使用下面的XSLT,但没有获得预期的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 14:14:34

以下样式表使用递归模板:

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="GTIN">
    <Values>
      <MultiValue AttributeID="GTINList"/>
      <xsl:call-template name="split">
        <xsl:with-param name="string" select="concat(.,',')"/>
      </xsl:call-template>
    </Values>
  </xsl:template>
  <xsl:template match="metadata">
    <Asset ID="X.test" UserTypeID="XAsset">
      <xsl:apply-templates/>
    </Asset>
  </xsl:template>
  <xsl:template match="root">
    <Assets>
      <xsl:apply-templates/>
    </Assets>
  </xsl:template>
  <xsl:template name="split">
    <xsl:param name="string"/>
    <xsl:if test="$string">
      <value>
        <xsl:value-of select="substring-before($string,',')"/>
      </value>
      <xsl:call-template name="split">
        <xsl:with-param name="string" select="substring-after($string,',')"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

在末尾添加一个额外的逗号,以确保substring-before也找到最后一个GTIN。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72561517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档