2013-04-26 64 views
0

這裏是源XML的摘錄:插入與specifiv新元素的屬性

<text key="#OK" default="TEST"> 
     <lang id="de" value="i.O." /> 
     <lang id="en" value="OK" /> 
     <lang id="cz" value="ak" /> 
     <lang id="dk" value="OK" /> 
</text> 

我想這個文檔轉換,使得每個text元素的新lang元件與id屬性「CH內「和具有文本元素的default屬性的內容的value屬性被插入。

結果應該是這樣的:

<text key="#OK" default="TEST"> 
     <lang id="de" value="i.O." /> 
     <lang id="en" value="OK" /> 
     <lang id="cz" value="ak" /> 
     <lang id="dk" value="OK" /> 
     <lang id="ch" value="TEST" /> 
</text> 

在正確的方向推任何非常,非常讚賞。

回答

1

這將做到這一點:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /> 
    <xsl:strip-space elements="*" /> 

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

    <xsl:template match="text"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()" /> 
     <lang id="ch" value="{@default}" /> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

當你的樣品輸入運行,其結果是:

<text key="#OK" default="TEST"> 
    <lang id="de" value="i.O." /> 
    <lang id="en" value="OK" /> 
    <lang id="cz" value="ak" /> 
    <lang id="dk" value="OK" /> 
    <lang id="ch" value="TEST" /> 
</text>