我从 XML 和几乎所有涉及的东西开始,在 XML Oxygen 编辑器中工作。我遇到了 XSD 架构的 3 种基本设计模式,但我不知道哪一种最适合我的需求。
我想创建一个大型架构来验证包含团队和球员的 XML 文件。
我的问题是,对于我的目的和总体而言,哪一个是最好的,被认为是安排最完善、最用户友好和最专业的?哪一个实际上是最常见的?对于 future 的 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设计模式的相对优势的很好的处理,参见
- Global versus Local: A Collectively Developed Set of Schema Design Guidelines
- Schema scope: Primer and best practices .
如果您在已建立 XSD 的部门工作,请遵循那里使用的模式。如果您的公司制定了惯例,请遵守这些惯例。
如果您正在学习,不受外界影响,并且想知道...
...what do you recommend me as to the beginner with XML to the future?
这里有一个适合初学者的合理方法:
- 从俄罗斯套娃图案开始。它简单、紧凑,常用于小示例。
- 当您需要在元素之间共享一种类型时,像在百叶窗中所做的那样单独定义它。
- 当您需要在多个地方共享一个元素时,像在 Salami Slice 中那样分别定义它。
通过这种方式,您将对每种方法的优势有一个实际的了解,如果您将来需要在更大范围内采用统一的策略,您将积累经验和直觉来做出明智的决定.
关于xml - XSD 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950540/