Rob*_*ska 160 xml null xml-nil
我看过null以下几种方式表示的元素:
元素存在于xsi:nil="true":
<book>
<title>Beowulf</title>
<author xsi:nil="true"/>
</book>
Run Code Online (Sandbox Code Playgroud)
该元素存在,但表示为一个空元素(我认为这是错误的,因为'空'并且null在语义上是不同的):
<book>
<title>Beowulf</title>
<author/>
</book>
<!-- or: -->
<book>
<title>Beowulf</title>
<author></author>
</book>
Run Code Online (Sandbox Code Playgroud)
返回的标记中根本不存在该元素:
<book>
<title>Beowulf</title>
</book>
Run Code Online (Sandbox Code Playgroud)
该元素有一个<null/>子元素(来自下面的TStamper):
<book>
<title>Beowulf</title>
<author><null/></author>
</book>
Run Code Online (Sandbox Code Playgroud)
是否有正确或规范的方式来表示这样的null价值?还有其他方法吗?
以上示例的XML是人为设计的,所以不要过多地阅读它.:)
Kit*_*YMG 115
xsi:nil是表示值的正确方法,以便:当发出DOM Level 2调用getElementValue()时,返回NULL值.xsi:nil还用于表示没有内容的有效元素,即使元素内容类型通常不允许空元素也是如此.
如果使用空标记,则getElementValue()返回空字符串("")如果省略标记,则甚至不存在author标记.这可能在语义上不同于将其设置为'nil'(例如,将"系列"设置为nil可能是该书属于无系列,而省略系列可能意味着该系列是当前元素的不适用元素.)
来自:W3C
XML Schema:Structures引入了一种机制,用于表示一个元素应该被接受为有效·当它没有内容时,尽管内容类型不需要或甚至不允许空内容.如果元素具有值为true的属性xsi:nil,则该元素可以是有效的而没有内容.如此标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性.
澄清:
如果你有一本书的xml元素,其中一个子元素是book:series,你可以在填写它时有几个选项:
没有规范的答案,因为XML从根本上说没有空概念.但我假设你想要Xml/Object映射(因为对象图有空值); 所以答案就是"无论你使用什么工具".如果你写处理,这意味着你喜欢什么.对于使用XML Schema的工具,xsi:nil是可行的方法.对于大多数映射器,省略匹配元素/属性是这样做的方法.
w3链接中的文档
http://www.w3.org/TR/REC-xml/#sec-starttags
说这是推荐的形式.
<test></test>
<test/>
Run Code Online (Sandbox Code Playgroud)
另一个答案中提到的属性是验证机制,而不是状态的表示.请参阅http://www.w3.org/TR/xmlschema-1/#xsi_nil
XML Schema:Structures引入了一种机制,用于表示一个元素应该被接受为有效·当它没有内容时,尽管内容类型不需要或甚至不允许空内容.如果元素具有值为true的属性xsi:nil,则该元素可以是有效的而没有内容.如此标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性.
澄清这个答案:内容
<Book>
<!--Invalid construct since the element attribute xsi:nil="true" signal that the element must be empty-->
<BuildAttributes HardCover="true" Glued="true" xsi:nil="true">
<anotherAttribute name="Color">Blue</anotherAttribute>
</BuildAttributes>
<Index></Index>
<pages>
<page pageNumber="1">Content</page>
</pages>
<!--Missing ISBN number could be confusing and misguiding since its not present-->
</Book>
</Books>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
176914 次 |
| 最近记录: |