下面我试图匹配某些节点。
<xsl:template match="nodes">
<element>
<xsl:apply-templates select="nodes" mode="different" />
</element>
</xsl:template>
现在,有多种方法可以处理相同的节点。我想用这种不同的方式处理当前的处理方式。这就是为什么我对同一个选项apply-templates
执行nodes
,但mode
现在不同了。
以下是不同模式的外观:
<xsl:template match="nodes" mode="different">
<!-- another way of processing these nodes -->
</xsl:template>
现在,这不起作用。仅处理第一种处理类型,并且不会应用apply-templates
调用。
更具体一点:
<xsl:template match="Foundation.Core.Association.connection">
<xsl:for-each select="Foundation.Core.AssociationEnd">
<someElement>
<xsl:apply-templates select="Foundation.Core.Association.connection" mode="different" />
</someElement>
</xsl:for-each>
</xsl:template>
如您所见,我选择Foundation.Core.Association.connection
。当然这是错误的,但是如果给出当前元素和位置,我该如何引用这个元素呢?鉴于Derek的评论,应该这样做。
我做错了什么,如何使用XSLT得到我想要的东西?什么是解决这个问题的另一种方法?
感谢。
答案 0 :(得分:1)
如果“nodes”指的是包含匹配项中相同的精确节点集,请尝试:
<xsl:template match="nodes">
<element>
<xsl:apply-templates select="." mode="different" />
</element>
</xsl:template>
答案 1 :(得分:0)
<xsl:template match="Foundation.Core.Association.connection"> <xsl:for-each select="Foundation.Core.AssociationEnd"> <someElement> <xsl:apply-templates
选择= “Foundation.Core.Association.connection” mode =“different”/&gt;
如你所见,我选择了 Foundation.Core.Association.connection。 当然这是错的,但我该怎么做 参考这个元素 当前元素和位置?
使用强>:
<xsl:apply-templates select=".." mode="different" />
您要以不同方式处理的元素是当前节点的父级。
当然,如果你能够显示更多的XML文档并以更加简洁的方式表达问题,那么很可能完全没有必要进行这种错综复杂的处理,这将得到证实。