2015-09-29 34 views
0

例如,下面的XSL是用下面的XML调用的,'param'的值是什么?具有不匹配选择的参数的值是多少?

问题是我需要测试不匹配的属性,它显然不是一个空字符串。

<el></el><!-- has no attribute 'attr' to match --> 

<xsl:template match="*"> 
    <xsl:call-template name="template"> 
     <xsl:with-param name="param" select="@attr" /> 
    </xsl:call-template> 
</xsl:template> 

<xsl:template name="template"> 
    <xsl:param name="param" /> 
    <xsl:value-of select="$param" /> 
</xsl:template> 

回答

2

的值将是空节点集

你可以看看规格here

有在这一段还提供了一个线索的最后一个音符:

备注:一个便捷的方式来指定空节点集作为参数的默认值是: <xsl:param name="x" select="/.."/>

由于根节点没有父节点,因此将始终返回一个空节点。

+0

任何想法如何测试,看看帕拉姆是否是空的节点集? – KthProg

+2

如果'$ param'是空的节点集,''应该返回true。 –

+0

@KthProg这是个诡计的问题。一个参数可以是空的也可以不是,它可以是节点集或不是。 –