【问题标题】:Is xsi:nil to be true is empty or null?xsi:nil 是真的是空还是空?
【发布时间】:2014-09-03 03:45:28
【问题描述】:

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

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

如果我通过以下方式检查元素 (e1) 是否包含文本:$e1='' for null 元素,那么上述 xml 是否会返回 true?我相信使用 xsi:nil 检查元素是否为空是可以的,以上将返回 false。

【问题讨论】:

    标签: xml xslt xpath schema xslt-2.0


    【解决方案1】:

    如果您的转换是模式感知的并且源文档是模式验证的,那么您可以使用 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 世界中没有 null 这样的东西,所以我不确定你的意思。关于您的第二句话,确实在任何模式有效的文档中,具有 xsi:nil="true" 的元素将没有文本节点或元素节点子节点。它可能有评论或处理指令的孩子。通常,并非所有文档都是架构有效的。
    • 那么问题的答案是“它会被视为......吗?”取决于什么软件在做治疗。你没有在你的问题中提到任何数据库软件,所以如果这是一个关于某个数据库软件的问题,也许你应该告诉我们哪个。没有 XML 软件会将任何内容视为 null,因为 null 不是 XML 概念。
    • 我要告诉你多少次我不知道你说“null”是什么意思?没有“空元素”之类的东西。
    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多