2015-06-04 71 views
0

我正在尝试使用xslt模板匹配与模式相结合功能根据条件运行特定模板。在这种情况下,admin是否设置为trueXSLT模式未被触发

<xsl:template match="*[//Properties[@Admin='true']]" mode="admin"> 
    <!-- i get here --> 
    <apply-templates select="self::node()[not(../PersonalisedErrorInstance)]" mode="personalisation"/> 
</xsl:template> 

<xsl:template match="*[//Properties[@Admin='false']]" mode="admin"> 
    <apply-templates select="self::node()" mode="personalisation"/> 
</xsl:template> 

<xsl:template match="*" mode="personalisation"> 
    <!-- never get here --> 

出于某种原因,我似乎从来没有打个性化模板匹配,无论admintruefalse。有明显的证据表明我做错了吗?

我试过将self::node()更改为*,所以我不确定是什么导致了这个问题。

+3

你忘了'领先的xsl:'在*应用模板* ...'的'应该工作正常,我猜。 – potame

+0

@potame叹了口气......大声笑我一直盯着它好几个小时。谢谢! *拍摄自我* – gardni

回答

0

*表示任何子实体,不能代替self::node()

如果您要提供源XML,我们可能会发现您的问题。可能是您当前的节点有一个兄弟实例PersonalisedErrorInstance

问候 魔女