如何将数据添加到在XSLT中创建的元素

时间:2013-05-01 22:37:12

标签: xml xslt

我的问题很简单,如何使用XSLT将数据插入到我在XSLT中创建的元素标记中?

例如我用它来创建我的元素:

<xsl:template match="VEHICLE">
  <xsl:element name="{@STATUS}">
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

XML结构:(输入)

<cars>
  <VEHICLE>
    <MODEL>FORD</MODEL>
    //other elements here
  </VEHICLE>
  <VEHICLE>
    <MODEL>DODGE</MODEL>
    //other elements here
  </VEHICLE>    
</cars>

(期望输出)

 <cars>
      <VEHICLE>
        <MODEL>FORD</MODEL>
        <STATUS>SOLD</STATUS>
        //other elements here
      </VEHICLE>
      <VEHICLE>
        <MODEL>DODGE</MODEL>
        <STATUS>AVAILABLE</STATUS>
        //other elements here
      </VEHICLE>
</cars>

2 个答案:

答案 0 :(得分:1)

您可以像这样添加元素<foo/>

<xsl:template match="VEHICLE">
  <xsl:element name="{@STATUS}">
    <xsl:apply-templates/>
    <foo/>
  </xsl:element>
</xsl:template>

答案 1 :(得分:0)

在您的输入文档中,我已将//other elements here更改为<!--//other elements here-->但除此之外,此转换会提供您想要的结果;

<强>输入

<cars>
  <VEHICLE>
    <MODEL>FORD</MODEL>
    <!--//other elements here-->
  </VEHICLE>
  <VEHICLE>
    <MODEL>DODGE</MODEL>
    <!--//other elements here-->
  </VEHICLE>    
</cars>

<强>变换

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="cars">
    <cars>
      <xsl:apply-templates/>
    </cars>
  </xsl:template>

  <xsl:template match="VEHICLE">
    <VEHICLE>
      <xsl:if test="MODEL = 'FORD'">
        <STATUS>SOLD</STATUS>
      </xsl:if>
      <xsl:if test="MODEL = 'DODGE'">
        <STATUS>AVAILABLE</STATUS>
      </xsl:if>
      <xsl:copy-of select="node()"/>
    </VEHICLE>
  </xsl:template>

</xsl:transform>

<强>结果

<cars>
  <VEHICLE>
    <STATUS>SOLD</STATUS>
    <MODEL>FORD</MODEL>
    <!--//other elements here-->
  </VEHICLE>
  <VEHICLE>
    <STATUS>AVAILABLE</STATUS>
    <MODEL>DODGE</MODEL>
    <!--//other elements here -->
  </VEHICLE>
</cars>