XML 中沒有規(guī)定哪些必須放在屬性或者子元素,因此使用哪種方式都是可以實現(xiàn)的。這取決于個人的經(jīng)驗和喜好。在可以使用元素也可以使用屬性的兩選一的情況下,個人更傾向于使用子元素。主要理由如下:
1. 屬性不易擴展,只能支持簡單數(shù)據(jù)類型。如果要定義的數(shù)據(jù)項將來可能擴展為復(fù)雜數(shù)據(jù)對象時,則應(yīng)毫不猶豫地使用子元素。
2. 子元素在XML文檔中更容易解析。
3. 相對屬性定義方式,用元素來定義會顯的更正式更重要。
4. 人看起來,用元素定義的文檔比屬性定義的文檔更好理解。
什么時候使用屬性來定義信息呢?個人認為,一個XML文檔中,要對信息進行分類,一類是以交換為目的的數(shù)據(jù)(這些數(shù)據(jù)可能會被重新使用和修改),一類是以展現(xiàn)或輔助交換為目的的數(shù)據(jù)(這類數(shù)據(jù)重要程度不高)。如果是前者,則使用元素來定義;如果是后者,則使用屬性來定義。另外,如果信息的數(shù)據(jù)類型是原子數(shù)據(jù)類型,如:令牌類型等,這種類型不可能再有擴展,因此可以使用屬性來定義。
國外文章給出的參考意見是:
1. 如果這個信息是可以用元素來定義清楚的,則使用元素方式來定義。
2. 如果這個信息命名對于一個元素來說,最終可能出現(xiàn)多個,則使用元素來定義。
3. 如果這個信息在DTD中被要求作為一個明確的屬性類型,如:ID、IDREF, 或 ENTITY,則使用屬性來定義。
4. 如果這個信息可能含有空格時,使用元素來定義。
另外,元素或?qū)傩悦麜r,如果有多個詞組合,則詞之間使用"_"連接符。