Как сделать группировку вложений в xslt - PullRequest
0 голосов
/ 16 октября 2019

Ниже приведен xml

<Report>
    <ReportBody>
        <Level type="Assessment-Area" name="Etch">
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="abc" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_1" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="xyz" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="abc" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="xyz" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="i" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
        </Level>
    </ReportBody>
</Report>

Я новичок в xslt. поэтому я попробовал пару методов, которые я нашел на Google. но это не работает.

Я хочу сгруппировать все базовые 64 изображения, которые присутствуют в теге «Измерение», затем подгруппировать те изображения, которые имеют такое же свойство «имя» внутри тега «Уровень», которые присутствуют чуть выше тега «Измерение».

1 Ответ

0 голосов
/ 16 октября 2019

Ваш требуемый вывод не слишком ясен, но вот пример, где вы могли бы получить измерения, сгруппированные по имени их родительского уровня.

Затем я просто скопировал узел измерений, но вы можете сохранитьтолько ваши обязательные атрибуты.

<xsl:template match="/">
    <xsl:for-each-group select="//Measurement" group-by="../@name">
        <xsl:element name="Level">
            <xsl:attribute name="name" select="current-grouping-key()"/>
            <xsl:for-each select="current-group()">
                <xsl:copy-of select="current()"/>
            </xsl:for-each>
        </xsl:element>
    </xsl:for-each-group>
</xsl:template>

...