我有一个我想实现新功能的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模式消费者时,才应该这样做。