如何跳过第一个xml元素组(标题行)

时间:2018-08-27 09:43:00

标签: xml xslt xml-parsing xslt-2.0 xslt-3.0

下面是我下面的XML代码段。我在第一组中收到完整的标头,并且我的数据从病房的第二个元素组开始。在这里,我如何跳过第一组?就像我需要避免第一行元素,而需要从第二行元素使用。某些身体可以发光吗,如何通过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 :(得分:1)

如果选择或处理/root/row[position() gt 1],则仅从第二个位置开始选择或处理row个元素。 XPath中的tail(/root/row)subsequence(/root/row, 2)或其他选项。

在XSLT的上下文中,根据您剩余的XSLT的外观,使用空模板<xsl:template match="root/row[1]"/>以确保第一个row不会产生任何输出也可能就足够了。

答案 1 :(得分:1)

在第一行/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