假设我有以下 xml 文件:
<jobs>
<job>
<PositionTitle>Painter</PositionTitle>
<InternalOrExternal>External</InternalOrExternal>
</job>
<job>
<PositionTitle>Plumber</PositionTitle>
<InternalOrExternal>Internal</InternalOrExternal>
</job>
<job>
<PositionTitle>Chemist</PositionTitle>
<InternalOrExternal>Internal</InternalOrExternal>
</job>
<job>
<PositionTitle>Teacher</PositionTitle>
<InternalOrExternal>External</InternalOrExternal>
</job>
</jobs>
.
我使用以下 xslt 处理它以仅显示外部作业:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:content="http://purl.org/rss/1.0/modules/content/" >
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:for-each select="jobs/job">
<xsl:if test="InternalOrExternal = 'External'"><!-- Only show external jobs -->
<xsl:value-of select="PositionTitle"/> - <xsl:value-of select="position()"/><br />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
结果如下:
Painter - 1
Teacher - 4
我假设 position() 函数返回 xml 文件中的实际位置,并且不考虑任何可能排除某些工作的 if 语句。在这种情况下,内部职位被排除在外,但他们的职位仍然被计算在内。
我想要的结果是:
Painter - 1
Teacher - 2
他们有什么方法可以让 position() 函数只计算我显示的内容吗?
我试过这个没有运气:
<xsl:value-of select="position(jobs/job[InternalOrExternal='External'])"/>