Altova XMLSpy 2023 Professional Edition

在Schema概览中,您已经创建了一个名为Company的全局元素。此元素将包含一个Address元素和无限数量的Person元素。这将是Company元素的内容模型。可以有内容模型的全局组件是:元素、复杂类型和元素组。在XMLSpy中,全局组件的内容模型显示在Schema视图的内容模型视图中。要查看和编辑全局组件的内容模型,请单击全局组件左侧的“显示图表”图标ic_component

schema_overview

在这一部分,您将创建Company元素的内容模型。

 

创建基本内容模型

要创建Company元素的内容模型,请执行以下操作:

 

1.在Schema概览中,单击Company元素的“显示图表”图标ic_component。这将显示Company元素的内容模型(参见下方截图),当前为空。或者,您可以双击“组件”输入助手中的Company条目以查看其内容模型。

content_model_empty

2.内容模型由排序符组件组成。排序符指定了两个组件之间的关系。在当前的Company内容模型中,您必须向Company元素添加一个子排序符,以便添加一个子元素。要添加排序符,请右键单击Company元素。从出现的上下文菜单中选择添加子级 | Sequence。(Sequence、Choice和All是可用于内容模型的三个排序符。)

tut_7a

这将插入Sequence排序符,它定义了后面的组件必须以指定的顺序出现。

tut_7b

3.右键单击Sequence排序符并选择添加子级 | 元素。这将添加一个未命名的元素组件。

4.将元素命名为Address,然后按Enter键确认。

tut_8a

5.再次右键单击Sequence排序符并选择添加子级 | 元素。将新创建的元素组件命名为Person

tut_8b

到目前为止,您已定义了一个Schema,允许每个公司有一个地址和一个员工。我们需要增加Person元素的数量。

6.右键单击Person元素,然后从上下文菜单中选择无限。现在图表中Person元素允许的出现次数显示为:1到无穷大。

tut_8c

或者,您可以在“详细信息”输入助手中编辑minOcc maxOcc 字段以指定允许的出现次数,在本例中分别是1和无限。

 

向内容模型的结构添加更多级别

您目前创建的基本内容模型包含一个级别:Company元素的子级别,其中包含AddressPerson元素。现在让我们定义Address元素的内容,使其包含NameStreetCity元素。这就是第二个级别。我们再次需要向Address元素添加一个子排序符,然后是元素组件本身。

 

为此,请执行以下操作:

 

1.右键单击Address元素以打开上下文菜单,然后选择添加子级 | Sequence。这将添加Sequence排序符。

2.右击Sequence排序符并选择添加子级|元素。将新创建的元素组件命名为Name

tut_9a

 

复杂类型、简单类型和XML Schema数据类型

到目前为止,我们还没有明确定义元素类型。单击文本选项卡以显示Schema的文本视图(如下所列)。您会注意到,只要插入Sequence排序符,xs:sequence元素就被插入到xs:complexType元素中。简而言之,CompanyAddress元素是复杂类型,因为它们包含子元素。复杂类型元素是包含特性或元素的元素。

 

<xs:element name="Company">

  <xs:annotation>

    <xs:documentation>Root element</xs:documentation>

  </xs:annotation>

  <xs:complexType>

    <xs:sequence>

      <xs:element name="Address">

        <xs:complexType>

          <xs:sequence>

            <xs:element name="Name"/>

          </xs:sequence>

        </xs:complexType>

      </xs:element>

      <xs:element name="Person"/>

    </xs:sequence>

  </xs:complexType>

</xs:element>

 

另一方面,简单类型元素仅包含文本,并不具有特性。文本可以是字符串、日期、数字等。我们希望AddressName子元素仅包含文本。这是一个简单类型,我们希望将其文本内容限制为字符串。这可以通过使用XML Schema数据类型xs:string来实现。

 

要将Name元素定义为此数据类型,请执行以下操作:

 

1.单击Schema选项卡返回到Schema视图。

2.单击Name元素以选择它。

3.在“详细信息”输入助手中,从type组合框的下拉菜单中选择xs:string 条目。

tut_9b

请注意,minOccmaxOcc的值都是1,表明该元素仅出现一次。

 

Name元素的文本表示如下:

 

<xs:element name="Name" type="xs:string"/>

 

提示:简单类型的元素可以有多种XML Schema数据类型中的任何一种。在所有这些情况下,表示文本内容的图标出现在元素框中。

 

© 2017-2023 Altova GmbH