2013-04-26 66 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>