2009-07-22 13 views
1

タグに 'id'属性を持たないejb-jar.xmlがあります。xml変換 - 現在のノードに応じて前のノードに属性を追加します

これを修正するにはどうすればよいでしょうか?このためにXSLTを使用できますか?

<session> 
    <ejb-name>EJB1</ejb-name> 
    <local-home>x.E1LH</local-home> 
    <local>x.E1L</local> 
    <ejb-class>x.E1EJB</ejb-class> 
    <session-type>Stateless</session-type> 
    <transaction-type>Container</transaction-type> 
</session> 

のように書き換えることが必要です。

<session id="EJB1"> <!--ejb-name gets added as an "id" attribute --> 
    <ejb-name>EJB1</ejb-name> 
    <local-home>x.E1LH</local-home> 
    <local>x.E1L</local> 
    <ejb-class>x.E1EJB</ejb-class> 
    <session-type>Stateless</session-type> 
    <transaction-type>Container</transaction-type> 
</session> 

答えて

1

XSLTは確かにそれを行うことができます...しかし、それは本当にあなたが何をする必要があるかに依存します。

(未テスト)のようなもの

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

<xsl:template match="session"> 
    <session id="{ejb-name}"> 
     <xsl:apply-templates select="@* | node()"/> 
    </session> 
</xsl:template> 
+0

1は、それを私にビート。私はまったく同じことを書くつもりだった。 – Tomalak

+0

'xsl:copy'と' xsl:attribute'を使っています( ''に他の属性がある場合のみ)。 –

+0

その他の属性は、依然としてapply-templates @ *によってコピーされます。 –

関連する問題