gpt4 book ai didi

xslt - 如何在 XML 文件中的多个位置添加一些复杂的结构

转载 作者:行者123 更新时间:2023-12-01 22:54:38 27 4
gpt4 key购买 nike

我有一个 XML 文件,其中有许多部分,如下所示:

<Operations>
<Action [some attributes ...]>
[some complex content ...]
</Action>
<Action [some attributes ...]>
[some complex content ...]
</Action>
</Operations>

我必须添加一个 <Action/>给每个<Operations/> 。看来 XSLT 应该可以很好地解决这个问题:

<xsl:template match="Operations/Action[last()]">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<Action>[some complex content ...]</Action>
</xsl:template>

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

我的问题是我的<Action/>的内容包含一些 xPath 表达式。例如:

<Action code="p_histo01">
<customScript languageCode="gel">
<gel:script
xmlns:core="jelly:core"
xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
xmlns:soap="jelly:com.niku.union.gel.SOAPTagLibrary"
xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:sql="jelly:sql"
xmlns:x="jelly:xml"
xmlns:xog="http://www.niku.com/xog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sql:param value="${gel_stepInstanceId}"/>
</gel:script>
</customScript>
</Action>

${gel_stepInstanceId}由我的 XSLT 解释,但我希望按原样复制它。那可能吗?怎么办?

最佳答案

<强> The XSLT 1.0 (and also 2.0) spec defines a strict way to escape curly braces在属性值内,以便它们不用于表示 AVT 的开始/结束。

引用规范:

When an attribute value template is instantiated, a double left or right curly brace outside an expression will be replaced by a single curly brace.

使用:

  <sql:param value="${{gel_stepInstanceId}}"/>

关于xslt - 如何在 XML 文件中的多个位置添加一些复杂的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com