xsi:nil为true是空的还是null?

时间:2014-09-02 17:38:01

标签: xml xslt xpath schema xslt-2.0

根据规范,如果某个元素的属性为xsi:nil且值为true,则该元素可能无效且无内容。例如,

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <e1 xsi:nil="true"></e1>
</root>

如果我正在检查元素(e1)是否包含类似于$e1=''的空元素,那么上面的xml是否会返回true?我相信可以用xsi:nil检查元素是否为空,上面的内容将返回false。

1 个答案:

答案 0 :(得分:4)

如果您的转换是模式感知的并且源文档是模式验证的,那么您可以使用fn:nilled()函数测试元素是否具有xsi:nil =“true”。

如果XSLT不支持模式,则xsi:nil就像任何其他属性一样。你可以使用测试

e1[@xsi:nil='true' and not(child::node())]

使用的确切测试取决于您要检查的确切条件。测试

e1[. = '']
例如

将匹配以下所有内容;

<e1/>
<e1 xsi:nil="true"/> 
<e1><f/></e1>
<e1><!-- x --></e1>