我看到过几种表示null
元素的方式:
元素存在但值为null
,并使用 xsi:nil="true"
表示:
元素存在,但值为 null,并使用 xsi:nil="true" 表示:
<book>
<title>Beowulf</title>
<author xsi:nil="true"/>
</book>
该元素存在,但被表示为空元素(我认为这是错误的,因为“空”和null
在语义上是不同的):
<book>
<title>Beowulf</title>
<author/>
</book>
<!-- or: -->
<book>
<title>Beowulf</title>
<author></author>
</book>
在返回的标记中根本不存在该元素:
<book>
<title>Beowulf</title>
</book>
该元素有一个<null/>
子元素(来自下面的TStamper):
<book>
<title>Beowulf</title>
<author><null/></author>
</book>
有没有一种正确或规范的方式来表示这样一个null
值?除了以上示例外,还有其他方法吗?
上面的示例XML是人为构造的,所以不要读得太深入。 :)
xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
。请注意缺少的 http://。这很重要,因为命名空间字符串实际上只是一个字符串,而不是 URI,对于 XML 解析器来说。 - Burak Arslanxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
。注意要有 "www."。请参见 http://www.w3.org/TR/xmlschema-1/#no-xsi。 - Janne Mattilaxsi:nil
属性声明是内置的,因此不需要(甚至可能不允许)声明xsi
命名空间。 - ChrisVxsi:
前缀。如果您尝试在未声明的情况下使用xsi:
前缀,一个命名空间感知的XML解析器将拒绝您的XML文档。相关规范在此处http://www.w3.org/TR/xml-names/#nsc-NSDeclared(“命名空间约束:前缀已声明”),其中指出唯一的预定义前缀是`xml:`和`xmlns:`。XML Schema建立在XML命名空间规范之上,但没有向其添加任何其他预定义前缀,因为这样做实际上会违反XML命名空间规范。 - Simon Kissane