xsi:无为真是空还是为空?
问题描述:
根据规范,如果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。
答
如果您的转换可以识别架构并且源文档经过模式验证,那么您可以使用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>
XML世界中没有这样的东西,所以我不确定你的意思。关于你的第二句话,在任何模式有效的文档中,具有xsi:nil =“true”的元素都将没有文本节点或元素节点子元素。它可能有评论或处理指导儿童。一般来说,并非所有文档都是模式有效的。 – 2014-09-03 19:21:10
那么这个问题的答案是“它会被当作......”吗?取决于哪些软件正在进行治疗。在你的问题中你没有提到任何数据库软件,所以如果这是关于某个数据库软件的问题,那么你可能应该告诉我们哪一个。没有XML软件会将任何东西都视为null,因为null不是XML概念。 – 2014-09-04 14:12:42
有多少次我必须告诉你,当你说“null”时,我不知道你的意思?没有像“空元素”这样的东西。 – 2014-09-04 20:47:03