2017-04-19 26 views
1

私は基本的にただ1つの要素を他の要素にコピーする必要があるXMLを持っています。私は必要なものXSLT - 1つの要素を別の要素で上書きする

<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ですが、<fr-CH>内側<de-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

」タグは常に存在しますか? –

+0

はい、常に「」タグがあります。 – Remy

答えて

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> 
+0

魅力的な作品です。ありがとう! – Remy

関連する問題