2010-04-30 55 views
2

我對這個比較陌生,但我希望有人能夠提出對我放在一起的這個XML結構的好評。我不深入尋找任何東西,而是如果有人發現任何與結構有內在聯繫的錯誤(或任何提示使它變得更好),我將不勝感激。有人會介意看看我的XML結構嗎?

我們有大量的產品,我們批發了,我們的客戶正在尋找一個數據源,將我們的產品納入他們的網站。

<product modified=""> 
    <id></id> 
    <title></title> 
    <description></description> 
    <upc></upc> 
    <quantity></quantity> 
    <images> 
     <image width="" height=""></image> 
     <image width="" height=""></image> 
     <image width="" height=""></image> 
    </images> 
    <category> 
     <name></name> 
     <subcategory></subcategory> 
    </category>  
    <sale expiration="">yes</sale> 
    <msrp></msrp>    
    <cube></cube> 
    <weight></weight> 
    <pricing> 
     <tier> 
      <pack><pack> 
      <price></price> 
     </tier> 
     <tier> 
      <pack><pack> 
      <price></price> 
     </tier>   
     <tier> 
      <pack><pack> 
      <price></price> 
     </tier> 
    </pricing> 
</product> 

我們出售的3種不同的包裝規格,因此定價節點。

回答

1
  1. 我不清楚你是否一直使用子元素來表示一對多關係。如果一個產品可以有多個類別,那麼很好,但如果它只能有一個,那麼使用名爲categoryNamecategorySubcategory的單個元素會更好。否則某個地方的人會誤解你的XML的語義,如果你一致的話,你將會遇到一個問題來解決這個問題。

  2. 說到這一點,你應該有一個計劃,記住當你需要在你的標籤名稱中使用多個單詞時會發生什麼。

  3. 我不清楚你是否有一致的理由使用屬性與元素。我懷疑你已經給出image元素widthheight屬性,因爲這是它們在HTML中的表示方式。如果我在整個設計中使用它們,我只會複製HTML約定。我不知道爲什麼sale元素具有expiration屬性。

  4. 說到sale元素,表示使用字符串truefalse的布爾值。 (您也可以使用10。)更廣泛的觀點是:使用XML Schema表示類型化數據。

XML設計的一致性比可讀性高100倍。如果你有一致的XML,你可以簡單地將它轉換成可讀的形式;事實並非如此。

+0

@羅伯特。感謝您的提示。 關於#2,你是否說在命名包含多個單詞的元素時應始終保持一致? 銷售到期是爲了讓用戶知道銷售何時提前結束(例如,僅在另外3天內出售) – 2010-04-30 21:43:17

+0

是的,這正是我所說的。至於'sale'屬性,我的問題確實是:爲什麼是一個屬性,而不是一個元素?在這樣的方案中,你只需要使用屬性來獲取元信息(例如'modified',這是關於該元素中信息的信息)。 – 2010-04-30 23:27:47

0

我認爲<pack><price>可能是屬性<tier>,或優選簡單地除去<tier>和具有<pack><price>作爲<pricing>屬性;

<tier pack="some-pack" price="some-price" /> 

<pricing pack="big-pack" price="high-price" /> 

不能完全肯定是否對你有意義(或爲您的企業),但將清理XML一點。

+0

感謝您的反饋意見。我將研究這一點。其中一個要求(靈活)是限制非關鍵數據的屬性數量。 – 2010-04-30 06:23:28

+1

除了Lars的評論(+1)之外,我還會在'image'上建議一個屬性來引用實際的圖像;像'src'。 – 2010-04-30 06:31:39

+0

@devnull我只是把URL放在標籤之間,但我認爲按照你的建議做這件事更有意義。 – 2010-04-30 06:32:52

0

如果你將所有屬性(即/ modifiedwidthheightexpiration)至元素,則客戶可以自動映射1產品規格:1,以JSON或內部對象。實際上有一天,您可能會考慮提供JSON或protocol buffers作爲數據的替代格式,而純XML結構將允許自動進行轉換。如果您擁有數十種各種XML格式(可能會不時更改),則可以獲得解脫。人們閱讀XML並手動從中提取信息是非常罕見的,因此絕對不需要首先將XML美容。

相關問題