如何在bpel中的xslt 1.0中将1个源数据映射到3个目标数据

时间:2015-11-20 16:17:24

标签: xslt-1.0 bpel

我有像这样的源xml ..

   <root>
    <rootElement>
  <Name>Name1</Name>
  <ID>001</ID>
  <element1>A</element1>
  <element2>B</element2>
  <element3>C</element3>
  <elementName>First</elementName>
</rootElement>
<rootElement>........</rootElement>
  </root>

我想要一个像

这样的目标xml
 <root>
 <rootElement>
 <name>Name1</name>
    <id>001</id>
  <element1>A</element1>
  <element2></element2>
  <element3></element3>
  <processedFlag>N</processedFlag>
  <elementName>First</elementName>
    </rootElement>
     <rootElement>
 <name>Name1</name>
  <id>001</id>
  <element1></element1>
  <element2>B</element2>
  <element3></element3>
  <processedFlag>N</processedFlag>
  <elementName>First</elementName>
    </rootElement>
        <rootElement>
    <name>Name1</name>
  <id>001</id>
  <element1></element1>
  <element2></element2>
  <element3>C</element3>
  <processedFlag>N</processedFlag>
  <elementName>First</elementName>
    </rootElement>
  </root>

表示每条记录,我需要3 <rootElement>个标签。

我尝试使用oraext:create-nodeset-from-delimited-string,但它不适用于多个元素。请帮忙。

1 个答案:

答案 0 :(得分:1)

以这种方式尝试:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="root">
    <xsl:copy>
        <xsl:apply-templates select="rootElement/element1 | rootElement/element2 | rootElement/element3"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="element1 | element2 | element3">
    <rootElement>
        <xsl:copy-of select="../Name | ../ID "/>
        <element1>
            <xsl:value-of select="current()[self::element1]" />
        </element1>
        <element2>
            <xsl:value-of select="current()[self::element2]" />
        </element2>
        <element3>
            <xsl:value-of select="current()[self::element3]" />
        </element3>
        <processedFlag>N</processedFlag>
        <xsl:copy-of select="../elementName"/>
    </rootElement>
</xsl:template>

</xsl:stylesheet>

演示:http://xsltransform.net/bFN1y99