首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xslt-3将xml元素合并到一个元素中

使用xslt-3将xml元素合并到一个元素中
EN

Stack Overflow用户
提问于 2021-08-21 08:41:43
回答 1查看 59关注 0票数 0
代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8" ?>
<mr:collection
    xmlns:mr="http://www.lc.gov/mr2/slim"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.lc.gov/mr2/slim http://www.lc.gov/standards/mrxml/schema/mr21slim.xsd">
    <mr:rc>
    <mr:dtf tg="2000" i1="1" i2=" ">
        <mr:sbf cd="a">Christoph Kolumbus</mr:sbf>
        <mr:sbf cd="d">John Diter</mr:sbf>
        <mr:sbf cd="b">Julie Nat</mr:sbf>
        <mr:sbf cd="f">Darius Milhaud</mr:sbf>
        <mr:sbf cd="g">Erich kleiber</mr:sbf>
        <mr:sbf cd="g">Franz Ludwig Horth</mr:sbf>
    </mr:dtf>
    <mr:dtf tg="3000" i1="1" i2=" ">
        <mr:sbf cd="a">Christoph Kolumbus</mr:sbf>
        <mr:sbf cd="d">Serg</mr:sbf>
        <mr:sbf cd="b">Mak</mr:sbf>
        <mr:sbf cd="f">DarMil</mr:sbf>
        <mr:sbf cd="g">Erikl</mr:sbf>
        <mr:sbf cd="g">LudHorth</mr:sbf>
    </mr:dtf>
</mr:rc>
<mr:rc>
<mr:dtf tg="2000" i1="1" i2="0">
    <mr:sbf cd="a">Chris Prante</mr:sbf>
    <mr:sbf cd="e">&quot;Chris Dietz&quot;</mr:sbf>
</mr:dtf>
</mr:rc>
</mr:collection>

我需要创建一个新的xml文件,方法是合并具有值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-21 17:26:24

这是一种很难满足所有选项的缺失或现有的项目,也许下面的帮助,因为它输出某些分隔符,只有当项目本身存在;然而,我没有得到确切的输出,希望你可以调整代码到你的需要:

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xpath-default-namespace="http://www.lc.gov/mr2/slim"
    exclude-result-prefixes="#all"
    expand-text="yes"
    version="3.0">

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="collection">
    <O-PM>
        <ListRcs>
            <xsl:apply-templates/>
        </ListRcs>
    </O-PM>
  </xsl:template>
  
  <xsl:template match="rc">
      <rc>
          <xsl:apply-templates/>
      </rc>
  </xsl:template>
  
  <xsl:template match="dtf[@tg = 2000]">
      <mdtd>
          <rc>
              <title xml:lang="el">{sbf[@cd = 'a']} {sbf[@cd = 'b']}{sbf[@cd = 'e']!(':', .)} {sbf[@cd = 'f']!('/', .)}{(sbf[@cd = 'g'] => string-join(' ; '))!('', .)}</title>
          </rc>
      </mdtd>
  </xsl:template>
  
  <xsl:template match="dtf[@tg != 2000]"/>
  
</xsl:stylesheet>

输出的命名空间没有声明,所以我没有把所有东西都放在命名空间中。

https://xsltfiddle.liberty-development.net/pNEj9dR上的示例。

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

https://stackoverflow.com/questions/68871458

复制
相关文章

相似问题

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