在同一XML中新实施的好习惯是什么



我有一个我想实现新功能的Web服务。我想知道将它们添加到默认的XML还是应该为此消费创建新方法是一个好习惯吗?

一个示例:我有一种返回产品,颜色,价格,尺寸等的特征的方法。我想实现一个新功能,该功能还将在多个网站上返回价格。实际XML:

<Product>
    <Name> IPhone X </Name>
    <Color> Black </Color>
    <Type> Smartphone </Type>
</Product>

新XML:

<Product>
    <Name> IPhone X </Name>
    <Color> Black </Color>
    <PriceInSites>
        <Site> www.apple.com </Site>
        <Price> 1000.00 </Price>
    <PriceInSites>
    <Type> Smartphone </Type>
</Product>

虽然多个客户已经在没有此XML块的情况下使用了实现 - 我应该在单独的方法中提供此功能吗?

在同一XML中新实施的好习惯?

首先,在您的新XML中,您的关闭PriceInsites标签应该看起来像该</PriceInSites>,而不是此<PriceInSites>。其次,答案取决于您的客户愿意为食用新XML而做的工作。我看不到您的XML模式文档,因此假设您的原始模式看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Type">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" Smartphone "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Product">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="Color"/>
                <xs:element ref="Type"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Name">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" IPhone X "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Color">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" Black "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>

然后,您的新XML模式应使新插入的标签可选:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Type">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" Smartphone "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Site">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" www.apple.com "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Product">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="Color"/>
                <xs:element ref="PriceInSites" minOccurs="0"/>
                <xs:element ref="Type"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PriceInSites">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Site"/>
                <xs:element ref="Price"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Price">
        <xs:simpleType>
            <xs:restriction base="xs:decimal">
                <xs:enumeration value="1000.0"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Name">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" IPhone X "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Color">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value=" Black "/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>

...通过将Minocurs设置为零。只有在您希望继续支持不愿或无法更新其XML定义以处理您的新元素的现有XML模式消费者时,才应该这样做。

相关内容

  • 没有找到相关文章

最新更新