XML в базу данных с использованием XSLT из-за количества элементов - PullRequest
0 голосов
/ 28 октября 2019

У меня много элементов, но моя XSLT-схема просто соответствует первому из них. Следствием этого является то, что он вставляет только одну строку в мою базу данных. Почему я говорю о базе данных? Потому что цель моего XSLT - преобразовать XML, чтобы вставить элементы XML в базу данных. Лучше показать вам изображение.

Этот код соответствует схеме XSLT:

    <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:template match="EstablecimientosVenta">
         <ENVIO>
           <TVEN_UP_BUQUE_TMP>
             <xsl:for-each select="EstablecimientoVenta">   
                <xsl:for-each select="Ventas">
                    <xsl:for-each select="VentasUnidadProductiva">

                       <METPROD><xsl:value-of select= 
                       "DatosUnidadProductiva/Buque/MetodoProduccion"/ 
                       </METPROD>

                       <CODIGO><xsl:value-of select= 
                       "DatosUnidadProductiva/Buque/CodigoBuque"/></CODIGO>

                       <PUERTOA><xsl:value-of 
                       select="DatosUnidadProductiva/Buque/PuertoAL5"/> 
                       </PUERTOA>

                       <ARMADOR><xsl:value-of 
                       select="DatosUnidadProductiva/Buque/Armador"/> 
                       </ARMADOR>

                       <CAPITAN><xsl:value-of 
                       select="DatosUnidadProductiva/Buque/Capitan"/> 
                       </CAPITAN>

                       <FREGRESO><xsl:value-of 
                   select="DatosUnidadProductiva/Buque/FechaRegresoPuerto"/> 
                       </FREGRESO>
                       <MAREA><xsl:value-of 
                       select="DatosUnidadProductiva/Buque/CodMarea"/> 
                      </MAREA>
                   </xsl:for-each>
               </xsl:for-each>
          </xsl:for-each>
    </TVEN_UP_BUQUE_TMP>
</ENVIO>
</xsl:template>

PD: Целью этой схемы XSLT является обработка схемы XML с помощью оракулапроцессор, который принимает XSLT и вставляет элемент XML в соответствующие столбцы таблицы (таблица TVEN_UP_BUQUE_TMP)

Это схема XML (она настолько велика, что я предоставлю вам уменьшенную схему):

<Envio xmlns="" NumEnvio="NV_17_06020_20190607_102221" TipoRespuesta="3">
   <EstablecimientosVenta>
      <EstablecimientoVenta NumIdentificacionEstablec="12.06021/A">
         <Ventas>
            <VentasUnidadProductiva>
               <DatosUnidadProductiva>
                  <Buque>
                     <MetodoProduccion>1</MetodoProduccion>
                     <CodigoBuque>ESP000025044</CodigoBuque>
                     <PuertoAL5>ESVJY</PuertoAL5>
                     <Armador>DEPORTES NAUTICOS CARLOS 
                     </Armador>
                     <FechaRegresoPuerto>2019-06- 
                     07T00:00:00</FechaRegresoPuerto>
                  </Buque>
               </DatosUnidadProductiva>
            </VentasUnidadProductiva>
            <VentasUnidadProductiva>
               <DatosUnidadProductiva>
                  <Buque>
                     <MetodoProduccion>1</MetodoProduccion>
                     <CodigoBuque>ESP000014149</CodigoBuque>
                     <PuertoAL5>ESVJY</PuertoAL5>
                     <Armador>FRANCISCO PEREZ SORIANO
                     </Armador>
                     <FechaRegresoPuerto>
                      2019-06-07T00:00:00</FechaRegresoPuerto>
                  </Buque>
               </DatosUnidadProductiva>
            </VentasUnidadProductiva>
         </Ventas>
      </EstablecimientoVenta>
   </EstablecimientosVenta>
</Envio>

Мой пример XML слишком велик, поэтому я предоставлю вам набор изображений, где вы сможете увидеть содержимое и результат.

Результат с этими схемами после анализа:

  | "METPROD"|  "CODIGO"    |"PUERTOA"| "ARMADOR"                |"CAPITAN"|         
  | - - - - -| - - - - - -  | - - - - | - - - - - - - - - - - - -|         |
  |  1       |"ESP000025044"| "ESVJY" |"DEPORTES NAUTICOS CARLOS"|  null   |

  |  "FREGRESO"           | "MAREA" |   "BU_VALIDO" | "NUMDOCVENTA"|
  | - - - -  - - - - - - -| - - - - | - - - - - - - | - - - - - - -|
  |  "2019-06-07T00:00:00"|   null  |      null     |    null      |

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

  row 1:

  | "METPROD"|  "CODIGO"    |"PUERTOA"| "ARMADOR"                |"CAPITAN"|         
  | - - - - -| - - - - - -  | - - - - | - - - - - - - - - - - - -|         |
  |  1       |"ESP000014149"| "ESVJY" | "FRANCISCO PEREZ SORIANO"|  null   |

  |  "FREGRESO"           | "MAREA" |   "BU_VALIDO" | "NUMDOCVENTA"|
  | - - - -  - - - - - - -| - - - - | - - - - - - - | - - - - - - -|
  |  "2019-06-07T00:00:00"|   null  |      null     |    null      |

  row 2:

  | "METPROD"|  "CODIGO"    |"PUERTOA"| "ARMADOR"                |"CAPITAN"|         
  | - - - - -| - - - - - -  | - - - - | - - - - - - - - - - - - -|         |
  |  1       |"ESP000014149"| "ESVJY" | "FRANCISCO PEREZ SORIANO"|  null   |

  |  "FREGRESO"           | "MAREA" |   "BU_VALIDO" | "NUMDOCVENTA"|
  | - - - -  - - - - - - -| - - - - | - - - - - - - | - - - - - - -|
  |  "2019-06-07T00:00:00"|   null  |      null     |    null      |

Я пытался использовать xslt для каждого случая, но это не решение.

На изображениях.

https://imgur.com/gallery/czapXVQ

Ожидаемый результат - набор строк с несколькими буквами.

...