1

我有一个 XML,在那个 XML 中我有一个元素 <storybody>,它本身有几个元素,现在我想要的是复制 <storybody> 中的每一个,并用 <a> 更改 <storybody> 中的 <URI> 标签。

请记住,我只需要为文档中的 <storybody> 执行此操作。

XML结构:

<mothertag>
     <atag>
        asdfasdfa
     </atag>

     <storybody>
        <p>sometext here<URI ref="http://google.com" /> some more text</p>
     </storybody>
</mothertag>

现在我想将此 URI 更改为标签。

4

1 回答 1

0

您将需要使用附加模板进行身份转换,以匹配您想要重命名的节点。像这样:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*" />
    <xsl:output indent="yes" method="html" />

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

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

</xsl:stylesheet>

应用于(更正结束storybody标签中的错字)时:

<mothertag>
     <atag>
        asdfasdfa
     </atag>

     <storybody>
        <p>sometext here<URI ref="http://google.com" /> some more text</p>
     </storybody>

</mothertag>

产生:

<mothertag>
   <atag>
      asdfasdfa

   </atag>
   <storybody>
      <p>sometext here
         <TAG ref="http://google.com"></TAG> some more text
      </p>
   </storybody>
</mothertag>
于 2012-05-10T12:28:02.040 回答