【问题标题】:DVM transformation on common seperated XML input using xslt使用 xslt 对常见的分隔 XML 输入进行 DVM 转换
【发布时间】:2016-01-12 07:43:31
【问题描述】:

我们正在处理一些奇怪的需求并寻求您的帮助。这是问题陈述。

作为对我们流程的请求,我们收到的输入是

<element1>A,B,C</element1>

现在我们需要一个 XSLT、DVM (SOA 11g) 来将这些值转换为输出

<output>X,Y,Z</output>

我们需要在 XSLT 中实现这一点。

【问题讨论】:

  • 我尝试使用 create-nodeset-from-delimited-string() 函数拆分逗号分隔的输入,然后我们需要转换该字符串。

标签: xslt xslt-1.0


【解决方案1】:

在我研究这个 create-nodeset-from-delimited-string() 函数时,这是一个纯 XSLT 1.0 解决方案。好像是oracle扩展?

此模板将采用给定的 pText(例如 /element1/text()),并将调用命名模板 (FUNC),并将分隔字符串的每个部分作为 ARG1。

您可能希望根据需要对其进行编辑。

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多