0

这是源xml的摘录:

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

我想转换此文档,以便在每个元素中插入一个具有属性“ch”text的新lang元素和一个具有文本元素属性内容的属性。idvaluedefault

结果应如下所示:

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

任何朝着正确方向的推动都非常非常感谢。

4

1 回答 1

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>
于 2013-04-26T13:36:59.097 回答