xml - XSL : Copy XML and then replace some tags

标签 xml xslt

我对 XSL/XSLT 很陌生。我想将一个 xml 文档复制到另一个文档中,但要替换一些命名空间标签和一些具有特殊属性的标签。例如:

<root>
  <ext:foo>Test</ext:foo>
  <bar>Bar</bar>
  <baz id="baz" x="test">
    <something/>
  </baz>
</root>

应该重写为:

<root>
  --Test--
  <bar>Bar</bar>
  xxx<baz id="baz">
    <something/>
  </baz>xxx
</root>

是否可以复制整个 XML,然后应用一些规则来替换我要替换的标签?

最佳答案

您可以复制一些节点并使用不同的规则重写其他节点。保持<root><bar>一样,重新写<baz> ,试试这个(未经测试)作为起点:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml"/>

  <!-- Match <baz> and re-write a little -->
  <xsl:template match="baz">
    xxx<baz id="{@id}">
     <xsl:apply-templates />
    </baz>xxx
  </xsl:template>

  <!-- By default, copy all elements, attributes, and text -->
  <xsl:template match="@* | node()">
<xsl:copy>
  <xsl:apply-templates select="@* | node()"/>
</xsl:copy>
  </xsl:template>


</xsl:stylesheet>

关于xml - XSL : Copy XML and then replace some tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651956/

相关文章:

html - 为使用来自 asp.net 的 XSL 创建的 html 应用外部 .css

html - XSLT 在编码符号时使用 HTML 数字而不是 HTML 名称?

javascript - 使用 jQuery 构建 XML 请求的最快方法

java - 从命名空间 xml 中提取节点及其全部内容

xml - XML 中的根节点、根元素和文档元素有什么区别?

php - 如何处理警告:SimpleXMLElement::__construct()?

xslt - xsl :template which has only name attribute and xsl:function 之间有什么区别

xml - 为什么 Clojure 将 xml 文档表示为 HashMap ?

sorting - Xslt 排序数字

xml - 基于 Web 的结构化文档创作解决方案