我有一个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,但<de-CH>
内的<fr-CH>
内容。 <en>
始终被移除。如果<fr-CH>
不存在,则应创建它。
<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>
并删除了<en>
标记。但现在我必须将<de-CH>
复制到新的(或现有的)<fr-CH>
。
<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"/> <!-- this empty template will remove them -->
</xsl:stylesheet>
答案 0 :(得分:1)
如果总会有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>