2010-09-12 73 views
0

這不是一個技術問題。更多的是標準化的東西。我有一堆需要序列化爲XML的業務對象。以最簡單的形式,我得到的對象X包含Y類型的對象.Y被擴展到Y1,Y2,Y3。命名XML標記

我的問題是,我應該去:

<X> 
    <Y> 
    <Y1 /> 
    <Y2 /> 
    <Y1 /> 
    <Y3 /> 
    </Y> 
</X> 

或:

<X> 
    <Y Type="Y1" /> 
    <Y Type="Y2" /> 
</X> 

當然,第一種方式是更具可讀性,這是我所想的去爲。任何理由爲什麼這不好?我猜我是在意見後...;)

+2

缺乏關於您的問題的背景信息使得這個問題看起來像是永恆的「元素與屬性」之謎的重複。如果這是你在思考的話,請看看這些問題:http://stackoverflow.com/questions/33746/ http://stackoverflow.com/questions/241819/ http://stackoverflow.com/questions/1455872/ http://stackoverflow.com/questions/1455872/ http://stackoverflow.com/questions/1096797/ http://stackoverflow.com/questions/3055413/ – jasso 2010-09-12 17:17:08

回答

0

嗯,我認爲這取決於你是如何使用序列化的數據 - 它是交換,臨時存儲,長期存儲等。更重要的是你需要從序列化中創建對象的實例?

如果它用於互換,那麼我會說它的屬性名稱本身以及它們持有的任何值都不重要,因此該類型應該是屬性。另一方面,如果這是出於存儲目的,那麼類型名稱可能同樣重要,如果您需要基於序列化來實例化對象,並且可能會更好地使用類型名稱作爲元素。

2

我不認爲有這樣一個普遍問題的答案 - 你真的需要給出更具體的例子,你想要實現什麼。格式不存在於真空中;預期的用法在這裏也很重要(「表單遵循功能」)。

1

我嘗試解釋換句話說其他人已經寫信給你。 您的問題包含的信息太少,無法回答。爲什麼?

在我看來,你的問題的主要問題是,你給我們太少關於你想要使用XML的主題的信息。 XML是一個元語言而不是一種語言。 XML只定義了一些簡單的基本規則。例如XHTML,XML Schema或XQuery是基於XML的語言。我們如何能在那裏比較?向您推薦使用某種語言的某種語言結構,以便在一般情況下爲您提供任何建議。

可以給你一些具有XML元素和具有XML屬性的限制。一些很好的鏈接,你可以在jasso的評論中找到你的問題。但這些信息並不能解決您的問題。

答案就像「元素在你的情況似乎更好」解決你的問題也不是真的。例如,您可以以不同方式編寫信息,即「Y擴展到Y1,Y2,Y3」。例如像

<Y1 base="Y" /> 
<Y2 base="Y" /> 
<Y3 base="Y" /> 

<class name="Y1" base="Y" /> 
<class name="Y2" base="Y" /> 
<class name="Y3" base="Y" /> 

或一些其他的方式,而不是像你在你的問題中寫道。所有這些XML文檔都是不同的XML語言。問題不僅在於您擁有的信息,還有您想從哪個方面查看信息。我們如何比較可以包含相同信息的不同「XML語言」?如果您在XML文件中編寫一些信息,您可能稍後需要閱讀信息。取決於什麼你以後需要的信息和在哪種情況下需要,需要等等來比較你可以使用的不同的建議XML語言。

所以a 一般關於元語言的問題XML不能很好地回答。