首页 > 解决方案 > XSLT 替换存在于另一个元素值中的元素

问题描述

我是 XSLT 的新手(使用 XSLT v1.0),我有以下输入:

<SUMMARY>
<TITLE>Lorem ipsum dolor <QUOTE ID="replace with this string"/> sit vel eu. 
</TITLE>
<P> Lorem ipsum dolor <QUOTE ID="replace with this string"/> sit vel eu. </P>
</SUMMARY>

<REFERENCE>
<TI>Lorem ipsum dolor <QUOTE ID="replace with this string"/> sit vel eu. 
</TI>
<P> Lorem ipsum dolor <QUOTE ID="replace with this string"/> sit vel eu. </P>
</REFERENCE>

我怎样才能用作为 QUOTE/ID 属性值的字符串替换我的 XML 输入中所有出现的元素 QUOTE。

标签: xmlxsltxpathxslt-1.0transformation

解决方案


向身份转换添加一个特殊的模板来处理QUOTE

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

  <xsl:template match="QUOTE">
      <xsl:value-of select="@ID"/>
  </xsl:template>

</xsl:stylesheet>

身份转换会将所有内容复制到输出 XML,而特殊QUOTE模板将复制其@ID属性的值来代替QUOTE元素。


推荐阅读