es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agrupación en XSLT 1.0 – Array con elementos internos y externos.

Estoy intentando aplicar la lógica de agrupación en el siguiente XML. Es un poco complicado para mí porque se hace referencia tanto a elementos internos como externos del array y la agrupación debe hacerse en el código que está dentro del array. He proporcionado lo que intenté, pero es ineficaz ya que no me da la salida deseada. Por favor sugiera cómo puedo agrupar esto.

  1. La agrupación se debe hacer en el código de categoría I y F que se encuentra dentro del array en la entrada.
  2. Los arrays dentro de la salida hacen referencia nuevamente al campo ID que está fuera del array en la entrada.

Salida esperada:





I


514355801
ABC
INDIVIDUAL
POCKET




514355801
DEF
INDIVIDUAL
BANK




F


514355801
ABC
FAMILY
POCKET




514355801
DEF
FAMILY
BANK




Entrada:



514355801


I
INDIVIDUAL
ABC
POCKET


I
INDIVIDUAL
DEF
BANK


F
FAMILY
ABC
POCKET


F
FAMILY
DEF
BANK


Lo que intenté – XSL:
































Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agrupar el XML de entrada basado en los códigos de categoría I y F que están presentes dentro de una matriz, puede usar el comando xsl:for-each-group con el atributo group-by establecido en el código de categoría deseado. Aquí hay un ejemplo de XSLT que debería producir la salida esperada:

    La idea clave es crear una variable que agrupe el XML de entrada en códigos de categoría distintos y luego usar bucles anidados para encontrar todos los puntos relevantes en el XML de entrada para cada grupo.

    El comando xsl:for-each-group agrupa por código de categoría y el comando xsl:sort asegura que la salida esté ordenada por código de categoría. Para cada grupo de códigos de categoría, copiamos el elemento de código de categoría a la salida, y luego creamos una variable que selecciona todas las entradas con ese código de categoría.

    Luego usamos otro bucle para procesar cada una de las entradas con ese código de categoría, usando el campo de ID para crear otro bucle que seleccione todos los campos relevantes para cada punto. Copiamos estos campos a la salida y luego cerramos los varios bucles y etiquetas para garantizar que la salida esté bien formada.

    Finalmente, usamos el comando xsl:copy-of para escribir el XML agrupado y procesado en la salida.

Comments are closed.