0
The input xml structure is like this:



  <Envelopes>
    <env:Envelope>
     <urn:MyFunction>
      <parameter1 attr1='df'>fdad</parameter1>
      <parameter2 attr2='ww'>dfsa</parameter2>
      <productData>
        <Id></Id>
        <Description></Description>
        <Price><Price>
      </productData>
    </urn:MyFunction>
    </env:Envelope>

    <env:Envelope>
     <urn:MyFunction1>
       <parameter1 attr1='df'>fdad</parameter1>
       <parameter2 attr2='ww'>dfsa</parameter2>
       <productData>
        <Id></Id>
        <Description></Description>
        <Price><Price>
       </productData>
    </urn:MyFunction>
   </env:Envelope>

   <env:Envelope>
     <urn:MyFunction1>
       <parameter1 attr1='df'>fdad</parameter1>
       <parameter2 attr2='ww'>dfsa</parameter2>
       <productData>
        <Id></Id>
        <Description></Description>
        <Price><Price>
       </productData>
    </urn:MyFunction>
   </env:Envelope>
 <Envelopes>

在我的 xsl 中,我正在执行以下操作:

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

<xsl:template match="productData/Description">
<Description>new Description</Description>
</xsl:template>

我打算保持其余productData元素和属性相同,但修改其中一些。但是生成的 xml 为description元素提供了新值,但只text nodes为其余元素提供了新值。如何获取 productData 的所有其余节点?

4

1 回答 1

1

您需要一个可以复制输入内容的身份模板。尝试将此添加到您的 XSLT:

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()" />
  </xsl:copy>
</xsl:template>
于 2013-07-12T14:49:10.253 回答