在XSLT 2.0下的XPATH中,我不清楚为什么Object
无法正常工作。
当我为元素xsl:choose/xsl:when @test
运行此模板测试时,该测试不会返回结果:
tei:del[@rend='expunctus']
当我仅使用属性<xsl:template match="tei:del[@rend='expunctus'] |
tei:gap |
tei:sic |
tei:supplied[@reason='added'] |
tei:surplus[@reason='repeated' or @reason='surplus'] |
tei:unclear">
<xsl:choose>
<xsl:when test="tei:del[@rend='expunctus']">
[<xsl:text>EXPUNCTUS</xsl:text>]
</xsl:when>
</xsl:template>
作为测试模板时,测试会返回结果:
@rend='expunctus'
这是因为已经选择了当前节点吗?
我更愿意针对元素而不是属性进行测试,以消除可能的歧义。
谢谢。
答案 0 :(得分:1)
是的,这是因为选择了当前节点。
您的模板与tei:del[@rend='expunctus']
相匹配(除其他外),因此当您进行<xsl:when test="tei:del[@rend='expunctus']">
时,它与您已匹配的节点有关,因此它正在寻找另一个tei:del
作为子节点当前节点的节点。
您可能需要做的是...
<xsl:when test="self::tei:del[@rend='expunctus']">
或者,考虑为每个可能的节点使用单独的模板,并将所有共享代码放在命名模板中。