下面是我下面的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>
答案 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