xml - XSD 设计模式

标签 xml xsd

我从 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设计模式的相对优势的很好的处理,参见

如果您在已建立 XSD 的部门工作,请遵循那里使用的模式。如果您的公司制定了惯例,请遵守这些惯例。

如果您正在学习,不受外界影响,并且想知道...

...what do you recommend me as to the beginner with XML to the future?

这里有一个适合初学者的合理方法:

  1. 从俄罗斯套娃图案开始。它简单、紧凑,常用于小示例。
  2. 当您需要在元素之间共享一种类型时,像在百叶窗中所做的那样单独定义它。
  3. 当您需要在多个地方共享一个元素时,像在 Salami Slice 中那样分别定义它。

通过这种方式,您将对每种方法的优势有一个实际的了解,如果您将来需要在更大范围内采用统一的策略,您将积累经验和直觉来做出明智的决定.

关于xml - XSD 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950540/

相关文章:

c# - 使用 StringReader 与 XmlNodeReader 反序列化对象属性

.net - 全局属性 'http://www.w3.org/XML/1998/namespace:lang' 已经声明

java - 编码期间未设置 JAXB 固定属性

c++ - Boost 属性树 (XML) 删除空行

python - 我如何要求元素在 XSD 架构中具有一组属性或另一组属性?

java - 在java中解析大量的xml文件

java - 尝试针对 xsd 文件验证 xml 时未找到文件异常

Android 约束布局显示属性 'android:layout_constraintWidth_percent' 未找到

c# - 使用 epplus 将 Excel 保存为电子表格 xml 2003

java - jaxb xsd模式重用