You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于特定文本匹配的XML转换需求:XSLTPROC修改内容并添加节点

XSLT解决方案:匹配特定文本并修改节点内容、添加同级节点

核心修改点

  • 精准定位目标节点:通过local-name()处理命名空间和不固定的节点名称,匹配ProcessDefinition下任意前缀的activity节点内的config/endpointURL,且文本内容为%%some/Global%%。
  • 替换指定文本:将匹配到的endpointURL文本替换为%%new/Code%%。
  • 正确注入ssl节点:将ssl节点输出在endpointURL同级位置(而非内部),符合期望的XML结构。

完整XSLT代码

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns999="http://some/xmlns/target"
    exclude-result-prefixes="ns999">
    <xsl:output method="xml" indent="yes"/>
    
    <!-- 身份模板:复制所有未被自定义模板匹配的节点和属性,保留原XML结构 -->
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    
    <!-- 匹配符合条件的endpointURL节点 -->
    <xsl:template match="*[local-name()='ProcessDefinition']/*[local-name()='activity']/config/endpointURL[normalize-space(text())='%%some/Global%%']">
        <!-- 复制endpointURL节点并替换文本内容 -->
        <xsl:copy>
            <xsl:text>%%new/Code%%</xsl:text>
        </xsl:copy>
        <!-- 在endpointURL同级位置添加ssl节点 -->
        <ns999:ssl>
            <ns999:strongCipherSuitesOnly>true</ns999:strongCipherSuitesOnly>
            <ns999:cert isRef="true">/.folder</ns999:cert>
        </ns999:ssl>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. 身份模板:作为XSLT转换的基础,确保原XML中未被修改的节点和属性完全保留。
  2. 目标节点匹配规则:
    • *[local-name()='ProcessDefinition']:匹配任意命名空间下的ProcessDefinition节点,避免前缀限制。
    • *[local-name()='activity']:匹配任意命名空间下的activity节点,解决节点名称/前缀不固定的问题。
    • endpointURL[normalize-space(text())='%%some/Global%%']:使用normalize-space()去除文本前后的换行、空格,确保精准匹配目标内容。
  3. 内容修改与节点添加:
    • 复制endpointURL节点后直接写入新文本,完成内容替换。
    • 在endpointURL节点输出完成后,紧接着输出ns999:ssl节点,确保其位于config块内、endpointURL的下方,符合预期结构。

执行命令

通过xsltproc执行转换:

xsltproc your-transform.xsl input.xml > output.xml

内容的提问来源于stack exchange,提问作者scaleTillDust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:37:06