我们正在处理一些奇怪的需求,并寻求您的帮助。这是问题陈述。
作为对我们流程的请求,我们正在以的形式获得输入
<element1>A,B,C</element1>
现在,我们需要一个XSLT、DVM(SOA 11g)来转换这些值,以便像一样输出
<output>X,Y,Z</output>
我们需要在XSLT中实现这一点。
在研究create-nodeset-from-delimited-string()函数时,这里有一个纯XSLT1.0解决方案。它似乎是预言机的扩展?
该模板将使用给定的pText(例如/element1/text()),并将使用分隔字符串的每一部分作为ARG1来调用命名模板(FUNC)。
您可能需要根据需要对此进行编辑。
<xsl:template name="split">
<xsl:param name="pText"/>
<xsl:param name="separator" select="','" />
<xsl:choose>
<xsl:when test="string-length($pText) = 0"/>
<xsl:when test="contains($pText, $separator)">
<xsl:call-template name="FUNC">
<xsl:with-param name="ARG1" select="substring-before($pText, $separator)"/>
</xsl:call-template>
<xsl:call-template name="split">
<xsl:with-param name="pText" select="substring-after($pText, $separator)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="FUNC">
<xsl:with-param name="ARG1" select="$pText"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>