2014-09-02 70 views
-1

根据规范,如果An元素具有值为true的属性xsi:nil,则它可以是无效的。因此,例如,xsi:无为真是空还是为空?

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

如果我检查,如果该元素(E1)包含文本或不一样的东西:$e1=''为空元素,以便将上面的XML返回真实与否?我相信它可以用xsi:nil来检查元素是否为空,并且上面的代码将返回false。

回答

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> 
+0

XML世界中没有这样的东西,所以我不确定你的意思。关于你的第二句话,在任何模式有效的文档中,具有xsi:nil =“true”的元素都将没有文本节点或元素节点子元素。它可能有评论或处理指导儿童。一般来说,并非所有文档都是模式有效的。 – 2014-09-03 19:21:10

+0

那么这个问题的答案是“它会被当作......”吗?取决于哪些软件正在进行治疗。在你的问题中你没有提到任何数据库软件,所以如果这是关于某个数据库软件的问题,那么你可能应该告诉我们哪一个。没有XML软件会将任何东西都视为null,因为null不是XML概念。 – 2014-09-04 14:12:42

+0

有多少次我必须告诉你,当你说“null”时,我不知道你的意思?没有像“空元素”这样的东西。 – 2014-09-04 20:47:03

相关问题