首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT -当分组用于重新组织数据时,计算第一个和最后一个位置

XSLT -当分组用于重新组织数据时,计算第一个和最后一个位置
EN

Stack Overflow用户
提问于 2021-05-09 20:11:42
回答 1查看 29关注 0票数 0

我需要将XML重组为4个不同的“块”。最后一个块必须包含来自group-by的不同值以及该组中第一个和最后一个实例的位置。当我对数据进行分组以构建其他块时,我找不到一种方法来实现这一点。

原始结构;

代码语言:javascript
复制
<?xml version="1.0"?>
<DATASET>
    <TABLE>
        <MATERIAL>AAA_007_-20</MATERIAL>
        <ROUTING_DESCRIPTION>1292UN-AAA_007_20 - IA3 Helicoils balancing masses</ROUTING_DESCRIPTION>
        <OPERATION>0005</OPERATION>
        <WORKCENTRE>S0204610</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>0</OPR_DURATION>
        <BAAN_TEXT_NBR>4636293</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>ORDEN DE DESPACHO. IA3 APLICABLE IAAA_007_20, CON REF. NRC MOS-NC-ASE-0074</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AAA_007_-20</MATERIAL>
        <ROUTING_DESCRIPTION>1292UN-AAA_007_20 - IA3 Helicoils balancing masses</ROUTING_DESCRIPTION>
        <OPERATION>0010</OPERATION>
        <WORKCENTRE>S0204610</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>0</OPR_DURATION>
        <BAAN_TEXT_NBR>4636294</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>DESPACHAR MATERIAL SEGUN ESTRUCTURA</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0010</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960079</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>DESMONTAJE CONJUNTO FEEDER IBERIA
===========================================================================
DESMONTAR CONJUNTO FEEDER IBERIA (AG100AE2526E.) Y ENVIAR A RYMSA.


...
VERIFICAR A-A</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0020</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960225</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>PREMONTAJE CONJUNTO BOCINA-POLARIZADOR
===========================================================================
UNIR CONJUNTO BOCINA POS.01 CON POLARIZADOR POS.02 MEDIANTE TORNILLOS
POS.08 Y ARANDELAS DE INVAR POS.10. S/SECCION E2-E2 DE</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0020</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960225</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>2</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>LA HOJA 01 DEL
PLANO. COORDINAR CARAS INTERNAS DE POLARIZADOR CON EJES DE BOCINA SEGÚN
NOTA 4.


...
VERIFICAR A-A.

===========================================================================
=    AVISAR A CONTROL DE PRODUCCION PARA ENVIAR</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0020</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960225</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>3</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>CONJUNTO A RF             =
===========================================================================</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0030</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960226</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>PRE-MONTAJE CONJUNTO BOCINA-SOPORTE BOCINA
===========================================================================
MONTAR SOPORTE FEEDER IBERIA POS.03 EN CONJUNTO BOCINA IBERIA POS.01 CON
TORNILLO POS.06 Y ARANDELA POS.07 S/SECCIÓN C1-C</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0030</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960226</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>2</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>1 Y E1-E1 DE LA HOJA 01 DEL
PLANO.


...
VERIFICAR A-A.

===========================================================================
=        AVISAR A CONTROL DE PRODUCCIÓN PARA ENVIAR CONJUNTO A RF         =
===============================</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0030</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960226</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>3</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>============================================</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0040</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960228</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>MONTAJE FINAL CONJUNTO FEEDER - PORALIZADOR
===========================================================================
MONTAR PASADORES POS.10 S/SECCIONES E1-E1 DE LAS HOJAS 01 DEL PLANO DESPUÉS
DEL AJUSTE DE RF S/NOTA 01 DE LA HOJA 01 DEL</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0040</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960228</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>2</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>PLANO.

PREPARAR MEZCLA DE ADHESIVO SOLITHANE S/IT-ERS-A005, APLICAR SOBRE ROSCA DE
LOS TORNILLOS POS.08 Y DAR DE APRIETE DEFINITIVO 2NM+PAR DE FRENADO SEGÚN
SECCIÓN TÍPICA DE LA HOJA 01 Y NOTAS 5 DEL PLANO.

PREPARAR MEZCLA DE ADHESIVO EC</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0040</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960228</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>3</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>2216 S/IT-S-A043, SELLAR TORNILLOS
POS.08 SEGÚN SECCIÓN TÍPICA Y NOTA  6 DE LA HOJA 01 DEL PLANO.

MONTAJE FINAL CONJUNTO FEEDER - SOPORTE FEEDER
===========================================================================
DAR DE APRIETE DEF</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0040</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960228</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>4</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>INITIVO A LOS TORNILLOS POS.06 DE 2,5NM+PAR DE FRENADO
SEGÚN NOTA DEL PLANO.


...
VERIFICAR A-A.</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0050</OPERATION>
        <WORKCENTRE>S0209835</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960229</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>CARACTERIZAR CONJUNTO FEEDER IBERIA
===========================================================================
VERIFICAR INTERFACES. RELLENAR REGISTRO DE INSPECCIÓN.


...
VERIFICAR A-A-X</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0060</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>4</OPR_DURATION>
        <BAAN_TEXT_NBR>3960230</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>PRE-MONTAJE FEEDER &amp; GUIA DE ONDA IBERIA
===========================================================================
REALIZAR OPERACIONES DESCRITAS EN EL APARTADO 6.4 DEL LIBRO DE MONTAJE.


PRE-MONTAJE FEEDER IBERIA
=======================</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0060</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>4</OPR_DURATION>
        <BAAN_TEXT_NBR>3960230</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>2</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>====================================================
REALIZAR OPERACIONES DESCRITAS EN EL APARTADO 6.8.2 DEL LIBRO DE MONTAJE.


MONTAJE FEEDER FINAL IBERIA
===========================================================================
REALIZA</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0060</OPERATION>
        <WORKCENTRE>S0204810</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>4</OPR_DURATION>
        <BAAN_TEXT_NBR>3960230</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>3</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>R OPERACIONES DESCRITAS EN EL APARTADO 6.10.2 DEL LIBRO DE MONTAJE.


...
VERIFICAR A-A.</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0070</OPERATION>
        <WORKCENTRE>S0209835</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960232</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>ALINEAMIENTO FEEDER IBERIA
===========================================================================
ENGLOBA EL ALINEAMIENTO DEL FEEDER IBERIA. OPERACIÓN 6.9.2 DEL LIBRO DE
MONTAJE.


...
VERIFICAR A-A-X</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0080</OPERATION>
        <WORKCENTRE>S0209808</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>1</OPR_DURATION>
        <BAAN_TEXT_NBR>3960235</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>REALIZAR VERIFICACIÓN FINAL.

...
VERIFICAR A-A-G-X</BAAN_TEXT_VAL>
    </TABLE>
    <TABLE>
        <MATERIAL>AG1-ECE-NCR0-04</MATERIAL>
        <ROUTING_DESCRIPTION>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_DESCRIPTION>
        <OPERATION>0090</OPERATION>
        <WORKCENTRE>S0204610</WORKCENTRE>
        <OPR_CONTROLKEY>ZP01</OPR_CONTROLKEY>
        <OPR_DURATION>0</OPR_DURATION>
        <BAAN_TEXT_NBR>3960234</BAAN_TEXT_NBR>
        <BAAN_TEXT_LINE_SEQ>1</BAAN_TEXT_LINE_SEQ>
        <BAAN_TEXT_VAL>ALMACENAR HASTA SU PRÓXIMO MONTAJE.</BAAN_TEXT_VAL>
    </TABLE>
</DATASET>

到目前为止XSLT;

代码语言:javascript
复制
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:template match="/DATASET">
    <xsl:for-each-group select="TABLE" group-by="ROUTING_DESCRIPTION">
      <BAPI>
        <ROUTING_ID>
          <xsl:value-of select="ROUTING_DESCRIPTION" />
        </ROUTING_ID>
        <OPERATIONS>
          <xsl:for-each-group select="current-group()" group-by="OPERATION">
            <item>
              <xsl:copy-of select="OPERATION" />
            </item>
          </xsl:for-each-group>
        </OPERATIONS>
        <TEXT>
          <xsl:for-each-group select="current-group()" group-by="concat(OPERATION, '|', BAAN_TEXT_LINE_SEQ)">
            <item>
              <xsl:copy-of select="OPERATION" />
              <xsl:copy-of select="BAAN_TEXT_VAL" />
            </item>
          </xsl:for-each-group>
        </TEXT>
        <TEXT_ASSIGN>
          <xsl:for-each-group select="current-group()" group-by="OPERATION">
            <item>
              <xsl:copy-of select="OPERATION" />
              <FROM></FROM>
              <TO></TO>
            </item>
          </xsl:for-each-group>
        </TEXT_ASSIGN>
      </BAPI>
    </xsl:for-each-group>
  </xsl:template>
</xsl:stylesheet>

和我的结果;

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
<BAPI>
    <ROUTING_ID>1292UN-AAA_007_20 - IA3 Helicoils balancing masses</ROUTING_ID>
    <OPERATIONS>
        <item>
            <OPERATION>0005</OPERATION>
        </item>
        <item>
            <OPERATION>0010</OPERATION>
        </item>
    </OPERATIONS>
    <TEXT>
        <item>
            <OPERATION>0005</OPERATION>
            <BAAN_TEXT_VAL>ORDEN DE DESPACHO. IA3 APLICABLE IAAA_007_20, CON REF. NRC MOS-NC-ASE-0074</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0010</OPERATION>
            <BAAN_TEXT_VAL>DESPACHAR MATERIAL SEGUN ESTRUCTURA</BAAN_TEXT_VAL>
        </item>
    </TEXT>
    <TEXT_ASSIGN>
        <item>
            <OPERATION>0005</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0010</OPERATION>
            <FROM />
            <TO />
        </item>
    </TEXT_ASSIGN>
</BAPI><BAPI>
    <ROUTING_ID>1707UN-AG1-ECE-NCR004 - REP. FEEDER IBERIA</ROUTING_ID>
    <OPERATIONS>
        <item>
            <OPERATION>0010</OPERATION>
        </item>
        <item>
            <OPERATION>0020</OPERATION>
        </item>
        <item>
            <OPERATION>0030</OPERATION>
        </item>
        <item>
            <OPERATION>0040</OPERATION>
        </item>
        <item>
            <OPERATION>0050</OPERATION>
        </item>
        <item>
            <OPERATION>0060</OPERATION>
        </item>
        <item>
            <OPERATION>0070</OPERATION>
        </item>
        <item>
            <OPERATION>0080</OPERATION>
        </item>
        <item>
            <OPERATION>0090</OPERATION>
        </item>
    </OPERATIONS>
    <TEXT>
        <item>
            <OPERATION>0010</OPERATION>
            <BAAN_TEXT_VAL>DESMONTAJE CONJUNTO FEEDER IBERIA
    ===========================================================================
    DESMONTAR CONJUNTO FEEDER IBERIA (AG100AE2526E.) Y ENVIAR A RYMSA.
    
    
    ...
    VERIFICAR A-A</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0020</OPERATION>
            <BAAN_TEXT_VAL>PREMONTAJE CONJUNTO BOCINA-POLARIZADOR
    ===========================================================================
    UNIR CONJUNTO BOCINA POS.01 CON POLARIZADOR POS.02 MEDIANTE TORNILLOS
    POS.08 Y ARANDELAS DE INVAR POS.10. S/SECCION E2-E2 DE</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0020</OPERATION>
            <BAAN_TEXT_VAL>LA HOJA 01 DEL
    PLANO. COORDINAR CARAS INTERNAS DE POLARIZADOR CON EJES DE BOCINA SEGÚN
    NOTA 4.
    
    
    ...
    VERIFICAR A-A.
    
    ===========================================================================
    =    AVISAR A CONTROL DE PRODUCCION PARA ENVIAR</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0020</OPERATION>
            <BAAN_TEXT_VAL>CONJUNTO A RF             =
    ===========================================================================</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0030</OPERATION>
            <BAAN_TEXT_VAL>PRE-MONTAJE CONJUNTO BOCINA-SOPORTE BOCINA
    ===========================================================================
    MONTAR SOPORTE FEEDER IBERIA POS.03 EN CONJUNTO BOCINA IBERIA POS.01 CON
    TORNILLO POS.06 Y ARANDELA POS.07 S/SECCIÓN C1-C</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0030</OPERATION>
            <BAAN_TEXT_VAL>1 Y E1-E1 DE LA HOJA 01 DEL
    PLANO.
    
    
    ...
    VERIFICAR A-A.
    
    ===========================================================================
    =        AVISAR A CONTROL DE PRODUCCIÓN PARA ENVIAR CONJUNTO A RF         =
    ===============================</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0030</OPERATION>
            <BAAN_TEXT_VAL>============================================</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0040</OPERATION>
            <BAAN_TEXT_VAL>MONTAJE FINAL CONJUNTO FEEDER - PORALIZADOR
    ===========================================================================
    MONTAR PASADORES POS.10 S/SECCIONES E1-E1 DE LAS HOJAS 01 DEL PLANO DESPUÉS
    DEL AJUSTE DE RF S/NOTA 01 DE LA HOJA 01 DEL</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0040</OPERATION>
            <BAAN_TEXT_VAL>PLANO.
    
    PREPARAR MEZCLA DE ADHESIVO SOLITHANE S/IT-ERS-A005, APLICAR SOBRE ROSCA DE
    LOS TORNILLOS POS.08 Y DAR DE APRIETE DEFINITIVO 2NM+PAR DE FRENADO SEGÚN
    SECCIÓN TÍPICA DE LA HOJA 01 Y NOTAS 5 DEL PLANO.
    
    PREPARAR MEZCLA DE ADHESIVO EC</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0040</OPERATION>
            <BAAN_TEXT_VAL>2216 S/IT-S-A043, SELLAR TORNILLOS
    POS.08 SEGÚN SECCIÓN TÍPICA Y NOTA  6 DE LA HOJA 01 DEL PLANO.
    
    MONTAJE FINAL CONJUNTO FEEDER - SOPORTE FEEDER
    ===========================================================================
    DAR DE APRIETE DEF</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0040</OPERATION>
            <BAAN_TEXT_VAL>INITIVO A LOS TORNILLOS POS.06 DE 2,5NM+PAR DE FRENADO
    SEGÚN NOTA DEL PLANO.
    
    
    ...
    VERIFICAR A-A.</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0050</OPERATION>
            <BAAN_TEXT_VAL>CARACTERIZAR CONJUNTO FEEDER IBERIA
    ===========================================================================
    VERIFICAR INTERFACES. RELLENAR REGISTRO DE INSPECCIÓN.
    
    
    ...
    VERIFICAR A-A-X</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0060</OPERATION>
            <BAAN_TEXT_VAL>PRE-MONTAJE FEEDER &amp; GUIA DE ONDA IBERIA
    ===========================================================================
    REALIZAR OPERACIONES DESCRITAS EN EL APARTADO 6.4 DEL LIBRO DE MONTAJE.
    
    
    PRE-MONTAJE FEEDER IBERIA
    =======================</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0060</OPERATION>
            <BAAN_TEXT_VAL>====================================================
    REALIZAR OPERACIONES DESCRITAS EN EL APARTADO 6.8.2 DEL LIBRO DE MONTAJE.
    
    
    MONTAJE FEEDER FINAL IBERIA
    ===========================================================================
    REALIZA</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0060</OPERATION>
            <BAAN_TEXT_VAL>R OPERACIONES DESCRITAS EN EL APARTADO 6.10.2 DEL LIBRO DE MONTAJE.
    
    
    ...
    VERIFICAR A-A.</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0070</OPERATION>
            <BAAN_TEXT_VAL>ALINEAMIENTO FEEDER IBERIA
    ===========================================================================
    ENGLOBA EL ALINEAMIENTO DEL FEEDER IBERIA. OPERACIÓN 6.9.2 DEL LIBRO DE
    MONTAJE.
    
    
    ...
    VERIFICAR A-A-X</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0080</OPERATION>
            <BAAN_TEXT_VAL>REALIZAR VERIFICACIÓN FINAL.
    
    ...
    VERIFICAR A-A-G-X</BAAN_TEXT_VAL>
        </item>
        <item>
            <OPERATION>0090</OPERATION>
            <BAAN_TEXT_VAL>ALMACENAR HASTA SU PRÓXIMO MONTAJE.</BAAN_TEXT_VAL>
        </item>
    </TEXT>
    <TEXT_ASSIGN>
        <item>
            <OPERATION>0010</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0020</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0030</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0040</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0050</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0060</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0070</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0080</OPERATION>
            <FROM />
            <TO />
        </item>
        <item>
            <OPERATION>0090</OPERATION>
            <FROM />
            <TO />
        </item>
    </TEXT_ASSIGN>
</BAPI>

在TEXT_ASSIGN块中,我需要计算每个操作的FROM和to值。这些值需要基于文本节点的内容,并定义每个操作在该节点中的第一个和最后一个位置。简单的例子是操作0020,它需要返回2的FROM和4的to。

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-09 20:45:57

我想你可以用一个变量来解决这个问题:

代码语言:javascript
复制
    <xsl:variable name="text">
    <TEXT>
      <xsl:for-each-group select="current-group()" group-by="concat(OPERATION, '|', BAAN_TEXT_LINE_SEQ)">
        <item>
          <xsl:copy-of select="OPERATION" />
          <xsl:copy-of select="BAAN_TEXT_VAL" />
        </item>
      </xsl:for-each-group>
    </TEXT>
    </xsl:variable>
    <xsl:sequence select="$text"/>
    <TEXT_ASSIGN>
      <xsl:for-each-group select="current-group()" group-by="OPERATION">
        <item>
          <xsl:copy-of select="OPERATION" />
          <xsl:variable name="indices" select="index-of($text/TEXT/item/OPERATION, current-grouping-key())"/>
          <FROM>
            <xsl:value-of select="$indices[1]"/>
          </FROM>
          <TO>
            <xsl:value-of select="$indices[last()]"/>
          </TO>
        </item>
      </xsl:for-each-group>
    </TEXT_ASSIGN>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67457539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档