根据规范,如果某个元素的属性为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。
答案 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>