【问题标题】:Using XSL to replace XML element text使用 XSL 替换 XML 元素文本
【发布时间】:2018-01-18 19:35:25
【问题描述】:

我需要使用 XSL 将 6.4.2 替换为 6.3.5。我对 XSL 很陌生,可以使用一些帮助。提前谢谢!

<?xml version="1.0" encoding="UTF-8"?>
<Transmission>
    <TransmissionHeader>
        <Version>6.4.2</Version>

【问题讨论】:

  • 你可以通过编程来完成,不是吗?
  • 除非它可以在样式表中完成,否则我不知道该怎么做。我个人只使用 SQL 和 PL/SQL,并且对 XSL 的经验有限。这是一次性案例。

标签: xml xslt


【解决方案1】:

其实你想替换Version元素的内容, 并非在源 XML 中每次出现此文本。 我还假设,您的 XML 包含 只有一个 这样的元素 我们对其源内容不感兴趣。

最简单的方法是编写一个只匹配这个元素的模板。 而就其内容而言,最简单的写法 它是用新的(更改的)内容生成一个文字元素

要“按原样”复制所有剩余内容,您需要身份模板

所以整个脚本如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output indent="yes" />

  <xsl:template match="Version">
    <Version>6.3.5</Version>
  </xsl:template>

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

【讨论】:

  • 感谢您的回复。我会尝试这个。你知道我在下面的代码中做了什么没有用吗?
  • 如果你的脚本是你上面写的all,那么错误是XSLT脚本的根标签应该是stylesheet 转换。将&lt;xsl:output indent="yes" /&gt;放在脚本开头也是一个好习惯。我将您的代码放在 transform 标记中,我发现这也有效。示例见xsltransform.net/aiwQ3m 如果您确定 Value 标记的源内容并且您的任务只是替换其内容(如我所假设),您可以从您的代码。
  • 谢谢你,Valdi_Bo!你的帮助很大,我今天学到了一些新东西!祝你有美好的一天。希望随着我越来越习惯 Stack Overflow 并更多地设置我的个人资料,我有一天能够回报我的青睐。
猜你喜欢
  • 2021-09-26
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多