2011-03-22 68 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