使用 xslt 更改某些元素的值


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。如何获取产品数据的其余所有节点?

您需要一个将复制输入内容的标识模板。尝试将其添加到 XSLT 中:

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

相关内容

  • 没有找到相关文章

最新更新