xslt, использующий глобальный параметр со схемой, работает в jdeveloper, но с ошибками в OSB - PullRequest
0 голосов
/ 08 июля 2019

Я использую XSLT 1.0 и использую инструмент jdeveloper для написания xslt. Я должен преобразовать выходные данные и несколько элементов из исходного запроса в окончательный ответ. Поэтому я создал xslt, используя первичный источник в качестве OutputParameters и определив глобальный параметр запроса ввода. `

    <oracle-xsl-mapper:schema>
    <!--SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY.-->
        <oracle-xsl-mapper:mapSources>
          <oracle-xsl-mapper:source type="XSD">
            <oracle-xsl-mapper:schema location="../Schema/APPS.xsd"/>
            <oracle-xsl-mapper:rootElement name="OutputParameters"
                                           namespace="http://xmlns.oracle.com/****/"/>
          </oracle-xsl-mapper:source>
          <oracle-xsl-mapper:source type="XSD">
            <oracle-xsl-mapper:schema location="../Schema/ManageAsset.xsd"/>
            <oracle-xsl-mapper:rootElement name="GetAssetRequest" namespace="http://*****.com/*****"/>
            <oracle-xsl-mapper:param name="GetAssetRequest"/>
          </oracle-xsl-mapper:source>
        </oracle-xsl-mapper:mapSources>
        <oracle-xsl-mapper:mapTargets>
          <oracle-xsl-mapper:target type="XSD">
            <oracle-xsl-mapper:schema location="../Schema/ManageAsset.xsd"/>
            <oracle-xsl-mapper:rootElement name="GetAssetResponseMsg" namespace="http://****.com/*****"/>
          </oracle-xsl-mapper:target>
        </oracle-xsl-mapper:mapTargets>
        <!--GENERATED BY ORACLE XSL MAPPER 12.1.3.0.0(XSLT Build 140529.0700.0211) AT [WED JUL 03 11:03:10 EDT 2019].-->
        </oracle-xsl-mapper:schema>`
<xsl:param name="GetAssetRequest"/>
      <xsl:template match="/">
      <ns1:GetAssetResponseMsg>
      <ns1:Response>
        <ns1:ExecutionResult>
          <ns1:successIndicator>
            <xsl:value-of select="/ns0:OutputParameters/ns0:X_RETURN_STATUS"/>
          </ns1:successIndicator>
        </ns1:ExecutionResult>
       </ns1:Response>
       <ns1:GetAssetRequest>
        <ns1:GetAssetInput>
          <ns1:serialNumber>
            <xsl:value-of select="$GetAssetRequest/ns1:GetAssetRequest/ns1:GetAssetInput/ns1:serialNumber"/>
          </ns1:serialNumber>
          <ns1:assetNumber>
            <xsl:value-of select="$GetAssetRequest/ns1:GetAssetRequest/ns1:GetAssetInput/ns1:assetNumber"/>
          </ns1:assetNumber>
          <ns1:assetBarcode>
            <xsl:value-of select="$GetAssetRequest/ns1:GetAssetRequest/ns1:GetAssetInput/ns1:assetBarcode"/>
          </ns1:assetBarcode>
          <ns1:organizationCode>
            <xsl:value-of select="$GetAssetRequest/ns1:GetAssetRequest/ns1:GetAssetInput/ns1:organizationCode"/>
          </ns1:organizationCode>
        </ns1:GetAssetInput>
      </ns1:GetAssetRequest>
    </ns1:GetAssetResponseMsg>

Пример запроса:

`<?xml version="1.0" encoding="UTF-8" ?>
<OutputParameters xmlns="http://xmlns.oracle.com/*****">
   <X_RETURN_STATUS>X_RETURN_STATUS98</X_RETURN_STATUS>
   <X_MSG>X_MSG99</X_MSG>
</OutputParameters>`


`<GetAssetRequest xmlns="http://****.com/****">
   <GetAssetInput>
      <serialNumber>999</serialNumber>
      <assetNumber>111</assetNumber>
      <assetBarcode>222</assetBarcode>
      <organizationCode>006</organizationCode>
   </GetAssetInput>
</GetAssetRequest>`

Ожидаемый результат:

`<ns1:GetAssetResponseMsg xmlns:ns1="http://*****.com/****" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <ns1:Response>
      <ns1:ExecutionResult>
         <ns1:successIndicator>X_RETURN_STATUS98</ns1:successIndicator>
      </ns1:ExecutionResult>
   </ns1:Response>
   <ns1:GetAssetRequest>
      <ns1:GetAssetInput>
         <ns1:serialNumber>999</ns1:serialNumber>
         <ns1:assetNumber>111</ns1:assetNumber>
         <ns1:assetBarcode>222</ns1:assetBarcode>
         <ns1:organizationCode>006</ns1:organizationCode>
      </ns1:GetAssetInput>
   </ns1:GetAssetRequest>
</ns1:GetAssetResponseMsg>`

Когда я тестирую в XSLT в jdeveloper, он работает нормально, и я получаю желаемый результат Но когда я тестирую на консоли OSB с подобными полезными нагрузками, я получаю ошибку ниже. Не уверен, что я делаю не так. Ошибка выполнения преобразования XSLT: XML-22900: (Неустранимая ошибка) Произошла внутренняя ошибка. Я думаю, что есть какая-то проблема с тем, как я преобразовываю или передаю GetAssetRequest. Ниже показано, как я присваиваю значения файлу преобразования из OSB: Bind Input
Входной документ: $ body / ns0: OutputParameters Переменные связывания
GetAssetRequest $ GetAssetRequest

Заранее спасибо

...