XSD 设计模式
XSD design patterns
我从 XML 和几乎所有涉及的东西开始,在 XML Oxygen 编辑器中工作。我已经遇到了 XSD 架构的 3 种基本设计模式,但我不知道哪一种最适合我的需求。
我想创建一个大型架构来验证 XML 包含球队和球员的文件。
我的问题是,对于我的目的和一般而言,哪一个是最好的,被认为是安排最完善、用户最友好和最专业的?哪一个是最常见的?对于 XML 未来的初学者,您有什么建议?
以下是我所知道的所有设计的样本:
俄罗斯套娃
我从这个开始,因为它简单易懂。没有引用引用所有类型。我相信这个适合小文件。
<xsd:element name="player">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
百叶窗
这是我最喜欢的一个,因为一开始就定义了结构,然后定义了所有类型的元素。
<xsd:element name="player" type="playerType"/>
<xsd:complexType name="playerType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality" type="nationalityType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="nationalityType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
意大利腊肠片
这个是我最推荐的,虽然我看到 XML 文件可以只包含一个元素,也可以包含所有元素。我对这个设计很困惑。
<xsd:element name="player">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="name"/>
<xsd:element ref="skill"/>
<xsd:element ref="nationality"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
My question is which one is the best and is considered to be the most
well-arranged, user-friendliest and professional for my purpose and in
general?
通常没有最好的 XSD 设计模式——只有针对特定目的的更好的设计模式。
关于XSD设计模式的相对优势的良好处理,参见
如果您在已建立 XSD 的部门工作,请遵循那里使用的模式。如果您的公司制定了惯例,请遵循这些惯例。
如果您正在学习,不受外界驾驶的影响,并且想知道...
...what do you recommend me
as to the beginner with XML to the future?
这里有一个适合初学者的合理方法:
- 从俄罗斯套娃图案开始。它简单、紧凑,经常用于小例子。
- 当您需要在元素之间共享类型时,像在百叶窗中所做的那样单独定义它。
- 当您需要在多个地方共享一个元素时,像在 Salami Slice 中那样分别定义它。
通过这种方式,您将对每种方法的优势有一个实际的了解,如果您将来需要在更大范围内采用统一的策略,您将获得经验和直觉来制定明智的决定。
我从 XML 和几乎所有涉及的东西开始,在 XML Oxygen 编辑器中工作。我已经遇到了 XSD 架构的 3 种基本设计模式,但我不知道哪一种最适合我的需求。
我想创建一个大型架构来验证 XML 包含球队和球员的文件。
我的问题是,对于我的目的和一般而言,哪一个是最好的,被认为是安排最完善、用户最友好和最专业的?哪一个是最常见的?对于 XML 未来的初学者,您有什么建议?
以下是我所知道的所有设计的样本:
俄罗斯套娃
我从这个开始,因为它简单易懂。没有引用引用所有类型。我相信这个适合小文件。
<xsd:element name="player">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
百叶窗
这是我最喜欢的一个,因为一开始就定义了结构,然后定义了所有类型的元素。
<xsd:element name="player" type="playerType"/>
<xsd:complexType name="playerType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality" type="nationalityType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="nationalityType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
意大利腊肠片
这个是我最推荐的,虽然我看到 XML 文件可以只包含一个元素,也可以包含所有元素。我对这个设计很困惑。
<xsd:element name="player">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="name"/>
<xsd:element ref="skill"/>
<xsd:element ref="nationality"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="skill" type="xsd:float"/>
<xsd:element name="nationality">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
My question is which one is the best and is considered to be the most well-arranged, user-friendliest and professional for my purpose and in general?
通常没有最好的 XSD 设计模式——只有针对特定目的的更好的设计模式。
关于XSD设计模式的相对优势的良好处理,参见
如果您在已建立 XSD 的部门工作,请遵循那里使用的模式。如果您的公司制定了惯例,请遵循这些惯例。
如果您正在学习,不受外界驾驶的影响,并且想知道...
...what do you recommend me as to the beginner with XML to the future?
这里有一个适合初学者的合理方法:
- 从俄罗斯套娃图案开始。它简单、紧凑,经常用于小例子。
- 当您需要在元素之间共享类型时,像在百叶窗中所做的那样单独定义它。
- 当您需要在多个地方共享一个元素时,像在 Salami Slice 中那样分别定义它。
通过这种方式,您将对每种方法的优势有一个实际的了解,如果您将来需要在更大范围内采用统一的策略,您将获得经验和直觉来制定明智的决定。