有人会介意看看我的XML结构吗?

时间:2010-04-30 06:12:47

标签: xml e-commerce feedback

我对此比较陌生,但我希望有人可以对我放在一起的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种不同的包装尺寸销售,因此定价节点。

3 个答案:

答案 0 :(得分:1)

  1. 我不清楚你是否一直使用子元素来表示一对多的关系。如果一个产品可以有多个类别,那么很好,但是如果它只有一个,那么使用名为categoryNamecategorySubcategory的单个元素会更好。否则,某个地方的某个人会误解你的XML的语义,如果你保持一致,你就会有一个问题需要解决。

  2. 说到这一点,您应该考虑到当您需要在标记名称中使用多个单词时会发生什么。

  3. 我不清楚您是否有一致的理由使用属性与元素。我怀疑您已经提供了image元素widthheight属性,因为这就是它们在HTML中的表示方式。如果我在整个设计中使用它们,我只会复制HTML约定。我不知道为什么sale元素具有expiration属性。

  4. 说到sale元素,使用字符串truefalse表示布尔值。 (您也可以使用10。)更广泛的观点是:使用XML Schema对类型化数据的表示。

  5. XML设计的一致性比可读性高100倍。如果您具有一致的XML,则可以将其简单地转换为可读形式;事实并非如此。

答案 1 :(得分:0)

我认为<pack><price>可以是<tier>的属性,或者最好只删除<tier>并将<pack><price>作为属性<pricing>;

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

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

不完全确定这对您(或您的公司)是否有意义,但会稍微清理XML。

答案 2 :(得分:0)

如果您将所有属性(即/ modifiedwidthheightexpiration)移动到元素,那么客户可以自动将您的产品规格1:1映射到JSON或其内部对象。事实上,有一天您可能会考虑提供JSON或protocol buffers作为数据的替代格式,而纯XML结构将允许自动进行转换。如果你有几十种不同的XML格式(可能会不时改变),这是一种解脱。人们很少阅读XML并手动从中提取信息,因此绝对不需要首先使用XML美容。