Удалить из 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>