У меня есть 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, но я бы хотел, чтобы он был скопирован как есть. Это возможно? Как?