2011-03-22 36 views
0

我不是这个熟悉XML,所以也许你能帮助我:-)如何处理空的XML元素?

比方说,我们有这样一个非常简单的XML文档:

<person> 
    <firstname>John</firstname> 
    <middlename/> 
    <familyname>Doe</familyname> 
</person> 

所以,显然约翰Doe没有中间名。在xsd文件中,此元素在minOccurs = 0时被定义为可选项。

是否有任何规则,标准,最佳实践或任何定义如何处理这个空元素?如果为一个元素定义了minOccurs = 0,它是否应该被删除?在我看来,空元素没有用处,除非属性与该元素一起使用。

谢谢, 罗伯特

回答

2

下面是一个XHTML文档的片段的一个例子:

<p>The quick brown fox<br />jumped over the lazy dog</p> 

没有与没有属性一个空元素,但除去其将改变文档的结构。

您不能将空元素作为通用过程移除。你必须根据具体情况做出决定。在你的例子中,删除它似乎是合理的(实际上,它似乎有点不合理,因为它似乎在说有一个中间名,但它没有数据)。

1

嗯,我会说这是一个定义问题。如果你想强调的是,一个人有一个中间名或不,不喜欢它在你的XML片段与minOccursmaxOccurs设置为1(或不同;也许你想模型不止一个中间名的人?)。否则,将minOccurs设置为0以允许将其忽略。

由于David表明拥有一个空元素并不一定与没有该元素相同。这是您如何定义语义的问题。

1

有些人会说,如果你知道这个人有没有中间的名字,你应该使用一个空元素,你应该忽略的元素,如果你不知道他们是否有一个中间名。但对大多数应用来说这是一个相当不错的区别。做出自己的选择。其实还有第三个选项,这是使用xsi:nil="true",但我永远无法理解为什么有人想利用这一点。当然,当你将个人名字建模为(第一,中间,最后)时,那么你将数据强制拟合到与世界中使用的真实个人名称不匹配的结构中,即使你只对住在美国的人感兴趣。

+0

迈克尔,非常感谢您的提示。是的,我知道这个名称问题。我原来的帖子只是一个例子:-) – 2011-03-24 07:55:10