Как пропустить первую группу элементов XML (строка заголовка) - PullRequest
0 голосов
/ 27 августа 2018

Ниже приведен мой фрагмент XML ниже.Я получаю полные заголовки в первой группе, и мои данные начинаются со 2-й группы элементов в приходах.Вот как я могу пропустить первую группу?Как и мне нужно избегать элементов первой строки и должен использовать элементы из второй строки.Может ли какое-то тело пролить свет, как я могу добиться этого с помощью XSLT?

<?xml version='1.0' encoding='UTF-8'?>
<root>
<row>
    <Empl-Id>Empl Id</Empl-Id>
    <Company>Company</Company>
    <firstname>firstname</firstname>
    <lastname>lastname</lastname>
    <Goal-Amount>Goal Amount</Goal-Amount>  
</row>
<row>
    <Empl-Id>0111</Empl-Id>
    <Company>A11</Company>
    <firstname>Jumn</firstname>
    <lastname>Henrry</lastname>
    <Goal-Amount>100</Goal-Amount>  
</row>
<row>
    <Empl-Id>0112</Empl-Id>
    <Company>A12</Company>
    <firstname>Jumn2</firstname>
    <lastname>Henrry2</lastname>
    <Goal-Amount>120t</Goal-Amount> 
</row>

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Используйте пустой элемент для первой строки /root/row[1]:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:output indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/root/row[1]"/>

</xsl:stylesheet>

Ваш вывод, например:

<?xml version="1.0" encoding="UTF-8"?>
<root>

    <row>
        <Empl-Id>0111</Empl-Id>
        <Company>A11</Company>
        <firstname>Jumn</firstname>
        <lastname>Henrry</lastname>
        <Goal-Amount>100</Goal-Amount>  
    </row>
    <row>
        <Empl-Id>0112</Empl-Id>
        <Company>A12</Company>
        <firstname>Jumn2</firstname>
        <lastname>Henrry2</lastname>
        <Goal-Amount>120t</Goal-Amount> 
    </row>
</root>

См. Упомянутую ссылку: https://xsltfiddle.liberty -development.net / 6qVRKww

0 голосов
/ 27 августа 2018

Если вы выбираете или обрабатываете /root/row[position() gt 1], вы выбираете или обрабатываете только элементы row, начиная со второй позиции. tail(/root/row) или subsequence(/root/row, 2) или другие параметры в XPath.

В контексте XSLT, в зависимости от того, как выглядит ваш оставшийся XSLT, может быть также достаточно использовать пустой шаблон <xsl:template match="root/row[1]"/>, чтобы гарантировать, что первый row не произведет никакого вывода.

...