xml - XSLT:是否可以盲目地传递大多数元素但转换特定元素?

标签 xml xslt

给定一个包含元素 a、b、c 和 d 的 xml 文件,是否可以编写一个仅更改元素“c”并盲目传递所有其他元素的 XSLT?

例如:

<?xml version="1.0" encoding="UTF-8"?>
<Person>
    <a>pass me blindly</a>
    <b>pass me blindly</b>
    <c>I need XSLT to convert me</c>
    <d>pass me blindly</d>
</Person>

是否可以有一个 XSLT 来转换“c”,但所有其他元素都按源中的原样传递?

我最终会得到:

<?xml version="1.0" encoding="UTF-8"?>
<Person>
    <a>pass me blindly</a>
    <b>pass me blindly</b>
    <c>I've been CONVERTED!</c>
    <d>pass me blindly</d>
</Person>

是的,我的 XSLT 知识水平有限。

最佳答案

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?xml-stylesheet type="text/xml" href=".\XSLTFile1.xslt"?>
 <Person >
  <a>pass me blindly</a>
  <b>pass me blindly</b>
  <c>I need XSLT to convert me</c>
  <d>pass me blindly</d>
</Person>

以下 XSL 转换模板将为您提供所需的结果

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
  <xsl:template match="xsl:stylesheet" />
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="c">
    <c>I've been CONVERTED!</c>
  </xsl:template>
</xsl:stylesheet>

关于xml - XSLT:是否可以盲目地传递大多数元素但转换特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413601/

相关文章:

xml - 在 visual studio 2010 中调试 xslt 文件

xml - 在 XML 中嵌入 XSL 以在 Web 浏览器中显示 : What am I doing wrong?

java - 如何在xsl中显示Java的String类型数组?

xml - 如何使用 XSL 复制子项

php - php 输入的结果是 1 而不是 XML 数据

java - 尝试使用以 XML 和 HTTP 编码的请求和响应检索数据时,从哪里开始是协议(protocol)

java - JAXB:使用不同的命名空间解码类似的 XML

java - JDK11 - 如何在解码期间忽略 namespace

java - 使用 Java 代码更改 FrameLayout 的顺序

pdf - 这个 Apache FOP 错误是什么意思?