2010-04-30 21 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美容。

相关问题