0

我的问题很简单,如何使用 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>
4

2 回答 2

1

你可以像这样添加一个元素<foo/>

<xsl:template match="VEHICLE">
  <xsl:element name="{@STATUS}">
    <xsl:apply-templates/>
    <foo/>
  </xsl:element>
</xsl:template>
于 2013-05-01T23:14:47.353 回答
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>    
于 2013-05-02T23:43:36.700 回答