2017-08-14 15 views
0

XSLT 1.0ファイルで変換する必要があるXML 1.0文書があります。私はこのようなルックスを変換する必要があるXML:XSLT 1.0を使用してXMLリストの中に要素を挿入する

<commandBarData guid="f3016f3c-2847-4557-b61a-a2d05319cf18"> 
    <menubar> 
    <modeData guid="76d73481-9076-44c9-821c-52de9408cce2"> 
     <item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/> 
     <item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d"/> 
     <item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741"/> 
     <item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5"/> 
    </modeData> 
    </menubar> 
</commandBarData> 

私はリストには、次のようになります要素<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/>

<item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/>を挿入する必要があります。

<commandBarData guid="f3016f3c-2847-4557-b61a-a2d05319cf18"> 
    <menubar> 
    <modeData guid="76d73481-9076-44c9-821c-52de9408cce2"> 
     <item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/> 
     <item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/> 
     <item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d"/> 
     <item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741"/> 
     <item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5"/> 
    </modeData> 
    </menubar> 
</commandBarData> 

私はこれをどのように行うのですかXSLT 1.0を使用していますか?

私はいくつかの試みを行いましたが、今では主に動作しているコードがあります。残りの1つの問題は、後に要素を挿入する方法です。以下のコードは...除いて動作します

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

<xsl:template 

一致= "uiConfig /コマンドバー/ commandBarData /メニューバー/ modeData /アイテム[@ guidRef = '0f948c18-f326-40e5-9beb-2efc73803797']">

それはこのXMLを生成します。

<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"><item guidRef="21c1f231-e03e-48e8-916a-d8790442b417" xmlns:frmwrk="Corel Framework Data" /></item> 
     <item guidRef="21c1f231-e03e-48e8-916a-d8790442b417" /> 
     <item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d" /> 
     <item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741" /> 
     <item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5" /> 

どのように私はそれを子として挿入する要素の後に追加していない作るのですか?

+0

を?あなたのコードを最初から書き直すのではなく、修正できるように、あなたの試みを投稿してください。 –

+0

@ michael.hor257k通常、私はそれをします。私の問題はこれまでのところ、xsltにはあまり慣れていないので、これまでの私の試みは基本的なものであり、近いものではありません。とにかくそれらを追加します。 –

+1

出発点が必要な場合は、[identity transform](https://www.w3.org/TR/xslt#copying)で始まり、次に[item [@ guidRef = '0f948c18-f326- 40e5-9beb-2efc73803797 '] 'そのテンプレートは、現在の 'item'のコピーを作成し、新しい' item'を作成する必要があります。 –

答えて

0

このソリューションでは、働いていた:まさにあなたはこれで立ち往生している

<xsl:template match="uiConfig/commandBars/commandBarData/menubar/modeData/item[@guidRef='0f948c18-f326-40e5-9beb-2efc73803797']"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*" /> 
    </xsl:copy> 
    <item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/> 
</xsl:template> 
関連する問題