Xml XSLT-用另一个元素覆盖一个元素

Xml XSLT-用另一个元素覆盖一个元素,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个XML,基本上只需要将一个元素复制到另一个元素上 <sitecore> <phrase path="/content/Bootcamper/Data/Forms/Contact" key="Contact" itemid="{1EDC7BBB-2194-4B0E-A031-F0383F60664D}" fieldid="Name" updated="20170410T131336Z"> <de-CH>Absenden</de-CH&g

我有一个XML,基本上只需要将一个元素复制到另一个元素上

<sitecore>
  <phrase path="/content/Bootcamper/Data/Forms/Contact" key="Contact" itemid="{1EDC7BBB-2194-4B0E-A031-F0383F60664D}" fieldid="Name" updated="20170410T131336Z">
    <de-CH>Absenden</de-CH>
    <fr-CH>Submit</fr-CH>
    <en>Submit</en>
  </phrase>
  <phrase path="/content/Bootcamper/Data/Forms/Contact/unknown section/Vorname" key="Vorname" itemid="{9D561751-5B89-4B90-A93F-383A591202DE}" fieldid="Title" updated="20170410T123903Z">
    <de-CH>Vorname</de-CH>
    <en>Firstname</en>
  </phrase>
</sitecore>

阿本登
提交
提交
沃名称
名字
我需要的是一个类似的XML,但其内容来自
内部
。和
始终被删除。如果
不存在,则应创建它

<sitecore>
  <phrase path="/content/Bootcamper/Data/Forms/Contact" key="Contact" itemid="{1EDC7BBB-2194-4B0E-A031-F0383F60664D}" fieldid="Name" updated="20170410T131336Z">
    <de-CH>Absenden</de-CH>
    <fr-CH>Absenden</fr-CH>
  </phrase>
  <phrase path="/content/Bootcamper/Data/Forms/Contact/unknown section/Vorname" key="Vorname" itemid="{9D561751-5B89-4B90-A93F-383A591202DE}" fieldid="Title" updated="20170410T123903Z">
    <de-CH>Vorname</de-CH>
    <fr-CH>Vorname</fr-CH>
  </phrase>
</sitecore>

阿本登
阿本登
沃名称
沃名称
我成功地复制了
并删除了
标签。但现在我必须将
复制到新的(或现有的)


如果总是存在
de CH
节点,一种方法是使用一个匹配
de CH
的模板复制它,但也添加
fr CH
节点

试试这个XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="utf-8" indent="no"/>

  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="en|fr-CH"/>

  <xsl:template match="de-CH">
    <xsl:copy-of select="." />
    <fr-CH>
      <xsl:value-of select="." />
    </fr-CH>
  </xsl:template>
</xsl:stylesheet>


是否总是会出现
标签?是的,总是会出现
标签。效果很好。谢谢
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="utf-8" indent="no"/>

  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="en|fr-CH"/>

  <xsl:template match="de-CH">
    <xsl:copy-of select="." />
    <fr-CH>
      <xsl:value-of select="." />
    </fr-CH>
  </xsl:template>
</xsl:stylesheet>