Удалить из xml лишнее через xsl

Всем привет, помогите мне написать xsl, чтобы удалить лишнее из xml есть вот такой xml,внем нужно оставить строки где написано <I N='NupMaxColumns'>5</I> и <I N='NupMaxRows'>10</I> остальное удалить, хотелось бы чтобы в итоге было как то так <NupMaxColumns>xx</NupMaxColumns> и <NupMaxRows>xx</NupMaxRows> естественно осавив форматирование xml. Заранее спасибо за оказаную помощь.

<?xml version="1.0" encoding="UTF-8" ?>
<QUITEXML xmlns="http://www.quite.com/general/ns/quitexml/">
<ITEMS>
<DICT N='0'>  <ITEMS>
  <A N='Category'>HistoryItem_V1</A>
  <A N='Command'>DefineBleed</A>
  <DICT N='Desc'>    <ITEMS>
    <S N='0'>Range: all pages</S>
    <S N='1'>Request: bleed all round 5.67 points</S>
    <S N='2'>Bleed area is outside visible: no</S>
    </ITEMS>  </DICT>

  <DICT N='Instance'>    <ITEMS>
    <S N='Time'>D:20221113180508</S>
    </ITEMS>  </DICT>

  <DICT N='Params'>    <ITEMS>
    <F N='BMgn'>0.0000</F>
    <B N='Interactive'>1</B>
    <F N='LMgn'>0.0000</F>
    <F N='Margin'>5.6693</F>
    <B N='Outside'>0</B>
    <I N='PosX'>710</I>
    <I N='PosY'>279</I>
    <F N='RMgn'>0.0000</F>
    <A N='Request'>Fixed</A>
    <DICT N='Source'>      <ITEMS>
      <DICT N='Range'>        <ITEMS>
        <A N='EvenOdd'>Both</A>
        <A N='RangeType'>AllDoc</A>
        </ITEMS>      </DICT>

      <A N='SourceType'>PDDoc</A>
      </ITEMS>    </DICT>

    <F N='TMgn'>0.0000</F>
    </ITEMS>  </DICT>

  <DICT N='Provider'>    <ITEMS>
    <S N='Code'>QITE_QuiteImposingPlus5</S>
    <S N='FullName'>Quite Imposing Plus 5.3d</S>
    <S N='Name'>Quite Imposing Plus 5</S>
    <I N='Version'>1</I>
    </ITEMS>  </DICT>

  <DICT N='Result'>    <ITEMS>
    <I N='DocPages'>1</I>
    <I N='FirstPage'>0</I>
    <I N='PagesProcessed'>1</I>
    </ITEMS>  </DICT>

  <I N='Version'>1</I>
  </ITEMS></DICT>

<DICT N='1'>  <ITEMS>
  <A N='Category'>HistoryItem_V1</A>
  <A N='Command'>StepAndRepeat</A>
  <DICT N='Desc'>    <ITEMS>
    <S N='0'>Trim unused space from sheets: yes</S>
    <S N='1'>Allow pages to be scaled: no</S>
    <S N='2'>Margins: left 8.50, top 8.50, right 8.50, bottom 8.50 points</S>
    <S N='3'>Horizontal spacing (points): 0 </S>
    <S N='4'>Vertical spacing (points): 0 </S>
    <S N='5'>Crop style 1, width 0.57, length 8.50, distance 5.67 (points)</S>
    <S N='6'>Add frames around each page: no</S>
    <S N='7'>Sheet size: 12.047 x 17.087 inches / 306.0 x 434.0 mm</S>
    <S N='8'>Sheet orientation: best fit</S>
    <S N='9'>Layout: rows 0 down, columns 0 across</S>
    <S N='10'>Align: centre, independent</S>
    </ITEMS>  </DICT>

  <DICT N='Instance'>    <ITEMS>
    <S N='Time'>D:20221118181715</S>
    </ITEMS>  </DICT>

  <DICT N='Params'>    <ITEMS>
    <F N='BMgn'>8.5039</F>
    <F N='CropDist'>5.6693</F>
    <F N='CropLength'>8.5039</F>
    <B N='CropMarks'>1</B>
    <A N='CropStyle'>Corners</A>
    <F N='CropWidth'>0.5669</F>
    <A N='DoScaling'>ToFit</A>
    <B N='EvenMirrorHorizontal'>0</B>
    <B N='EvenMirrorVertical'>0</B>
    <I N='FitAcross'>0</I>
    <I N='FitDown'>0</I>
    <F N='FixedScale'>0.7000</F>
    <B N='Frames'>0</B>
    <S N='HSpace'>0 </S>
    <B N='Interactive'>0</B>
    <F N='LMgn'>8.5039</F>
    <B N='NewDoc'>0</B>
    <DICT N='Page'>      <ITEMS>
      <S N='Created'>D:20221118005229</S>
      <F N='Height'>1230.2362</F>
      <A N='Type'>Blank</A>
      <F N='Width'>867.4016</F>
      </ITEMS>    </DICT>

    <A N='PageOrientation'>Best</A>
    <I N='PosX'>700</I>
    <I N='PosY'>302</I>
    <F N='RMgn'>8.5039</F>
    <A N='SheetAlign'>C</A>
    <B N='SheetAlignIndependent'>1</B>
    <DICT N='Source'>      <ITEMS>
      <A N='SourceType'>PDDoc</A>
      </ITEMS>    </DICT>

    <F N='TMgn'>8.5039</F>
    <B N='Trim'>1</B>
    <I N='UIVer'>2</I>
    <B N='UseMgn'>1</B>
    <B N='UseScale'>0</B>
    <S N='VSpace'>0 </S>
    </ITEMS>  </DICT>

  <DICT N='Provider'>    <ITEMS>
    <S N='Code'>QITE_CMDLINE1</S>
    <S N='FullName'>Quite Hot Imposing</S>
    <S N='Name'>Quite Hot Imposing</S>
    <I N='Version'>1</I>
    </ITEMS>  </DICT>

  <DICT N='Result'>    <ITEMS>
    <I N='NupMaxColumns'>5</I>
    <I N='NupMaxRows'>10</I>
    <F N='NupMaxSheetHeight'>0.0000</F>
    <F N='NupMaxSheetWidth'>0.0000</F>
    <F N='NupMinSheetHeight'>0.0000</F>
    <F N='NupMinSheetWidth'>0.0000</F>
    <I N='NupNumInputPages'>1</I>
    <I N='NupNumSheets'>1</I>
    </ITEMS>  </DICT>

  <I N='Version'>1</I>
  </ITEMS></DICT>

<DICT N='2'>  <ITEMS>
  <A N='Category'>HistoryItem_V1</A>
  <A N='Command'>DefineBleed</A>
  <DICT N='Desc'>    <ITEMS>
    <S N='0'>Range: all pages</S>
    <S N='1'>Request: bleed all round 8.50 points</S>
    <S N='2'>Bleed area is outside visible: no</S>
    </ITEMS>  </DICT>

  <DICT N='Instance'>    <ITEMS>
    <S N='Time'>D:20221118181715</S>
    </ITEMS>  </DICT>

  <DICT N='Params'>    <ITEMS>
    <F N='BMgn'>0.0000</F>
    <B N='Interactive'>0</B>
    <F N='LMgn'>0.0000</F>
    <F N='Margin'>8.5039</F>
    <B N='NewDoc'>0</B>
    <B N='Outside'>0</B>
    <I N='PosX'>710</I>
    <I N='PosY'>279</I>
    <F N='RMgn'>0.0000</F>
    <A N='Request'>Fixed</A>
    <DICT N='Source'>      <ITEMS>
      <DICT N='Range'>        <ITEMS>
        <A N='EvenOdd'>Both</A>
        <A N='RangeType'>AllDoc</A>
        </ITEMS>      </DICT>

      
      <A N='SourceType'>PDDoc</A>
      </ITEMS>    </DICT>

    <F N='TMgn'>0.0000</F>
    </ITEMS>  </DICT>

  <DICT N='Provider'>    <ITEMS>
    <S N='Code'>QITE_CMDLINE1</S>
    <S N='FullName'>Quite Hot Imposing</S>
    <S N='Name'>Quite Hot Imposing</S>
    <I N='Version'>1</I>
    </ITEMS>  </DICT>

  <DICT N='Result'>    <ITEMS>
    <I N='DocPages'>1</I>
    <I N='FirstPage'>0</I>
    <I N='PagesProcessed'>1</I>
    </ITEMS>  </DICT>

  <I N='Version'>1</I>
  </ITEMS></DICT>

<A N='Category'>HistoryList_V1</A>
<S N='Requires'>qi2base</S>
</ITEMS>
</QUITEXML>
введите сюда код

Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Пожалуйста, попробуйте следующее решение.

XSLT 3.0

<?xml version="1.0"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" expand-text="yes" xpath-default-namespace="http://www.quite.com/general/ns/quitexml/">
    <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no"/>

    <xsl:template match="QUITEXML">
        <PageCount>
            <xsl:for-each select="//I[@N=('NupMaxColumns','NupMaxRows')]">
                <xsl:choose>
                    <xsl:when test="@N='NupMaxColumns'">
                        <CountColumns>{text()}</CountColumns>
                    </xsl:when>
                    <xsl:when test="@N='NupMaxRows'">
                        <CountRows>{text()}</CountRows>
                    </xsl:when>
                </xsl:choose>
            </xsl:for-each>
        </PageCount>
    </xsl:template>
</xsl:stylesheet>

Результат

<?xml version='1.0' encoding='utf-8' ?>
<PageCount>
  <CountColumns>5</CountColumns>
  <CountRows>10</CountRows>
</PageCount>
→ Ссылка