<xdr:ElementType> 元素

定义一个元素类型,在 XML 数据缩减 (XDR) 架构的 Schema 元素中使用。

<ElementType
  content="{empty | textOnly | eltOnly | mixed}"
  dt:type="datatype"
  model="{open | closed}"
  name="idref"
  order="{one | seq | many}">

特性

  • content
    一个指示符,指示内容是否必须是空或是否可以包含文本、元素还是两者都可以包含。 可以为此属性分配下列值。 content 属性的默认值为 mixed。 如果 content 属性设置为 mixedorder 属性需要 many 值。

    empty

    元素不能包含内容。

    textOnly

    元素只能包含文本,不能包含元素。 如果 model 属性设置为 open,元素可以包含文本和其他未命名的元素。

    eltOnly

    元素只能包含指定元素。 不能包含任何自由文本。

    mixed

    元素可以包含命名的元素和文本的混合。 默认值为 mixed。 如果 content 属性的值为 mixed,若子元素数超过指定的范围,minOccursmaxOccurs 属性不会触发验证错误。

ms256223.note(zh-cn,VS.100).gif注意:
不允许包含 content="empty" 和 model="open" 的元素。

示例

说明

以下示例显示具有不同值的 content 属性的用法。

旧式代码示例

以下示例显示等效的文档类型定义 (DTD) 的 content 属性。

  • dt:type
    元素的数据类型。 有效的数据类型在 XDR 架构数据类型参考中定义。
  • model
    一个指示符,指示内容是否只能包含内容模型中定义的内容。 默认值为 open

    <ElementType name="x" model="open"/>
    

    如果模型定义为 open,元素可以包含内容模型中未明确声明的其他元素或属性。 这些附加的标记可以来自同一个命名空间,也可以来自不同的命名空间。 如果处于同一个命名空间,架构中必须存在这些标记对应的 ElementTypeAttributeType 定义。

    如果模型定义为 closed,元素将无法包含内容模型中未指定的元素和混合内容。 DTD 使用封闭的模型。

  • name
    元素的名称。 该属性是必选项。 如果该元素类型声明为另一个元素类型的有效子级,该名称将在 element 元素中指定。

    <ElementType name="x">
    </ElementType>
    

    DTD 等效项如下所示。

    <!ELEMENT x EMPTY>
    
  • order
    指示元素如何出现的指示符。 该指示符可以具有下列值。

    one

    只允许元素集中的一个。 要在指定 one 属性的情况下正确验证文档,ElementTypemodel 属性必须指定为 closed

    seq

    要求元素按照指定顺序显示。

    many

    允许元素按照任意顺序显示(或不显示)。 如果为 order 属性指定了 many,在验证期间,与 maxOccurs 值不再有关。

    需要使用 seq 值才能指定有效的序列。 例如,可以用于指定何时特定序列(例如 x1,y1x2,y2)有效、但是任何其他可能的组合均无效。 seq 值的作用与 DTD 中的括号相同。 默认值为 seq

    下面的示例阐释 one 设置。 如果为 order 属性指定了 onemodel 属性的值必须为 closed

    下面的示例阐释 seq 设置。

    下面的示例阐释 many 设置。

    order 属性的 many 设置使验证时与 minOccursmaxOccurs 属性无关。 不是将 order 属性的 many 设置与 minOccursmaxOccurs 结合使用,而是使用 seq 设置。 例如,考虑以下架构,该架构设置 order="seq"

如果以下 XML 文档针对前面的架构进行验证,因为 Publisher 元素数超过了指定的 maxOccurs1,验证将失败。 但是,如果 order 值设置为 many,验证将无法正确地成功完成,因为将忽略 maxOccurs="1" 设置。

元素信息

出现次数

无限制

父元素

Schema

子元素

attributeAttributeTypedatatypedescriptionelementgroup

元素属性

标记 说明

Name="idref"

ElementTypeAttributeType 元素必须具有名称。

Model="open"

此元素中允许包含内容模型中未指定的元素或混合内容。 要将特定定义划分子类,此设置必须为 open(在以后实现继承时)。

Model="closed"

此元素中不允许包含内容模型中未指定的元素或混合内容。

content="empty"

元素不得包含任何内容。

content="textOnly"

元素只能包含文本,不能包含元素。 如果 model="open",元素仍可以包含文本和其他未命名的元素。

*

content="mixed"

元素可以包含命名的元素和混合文本的混合。 如果 model="open",元素仍可以包含文本和其他未命名的元素。 意味着 order='many' 和 maxOccurs="*"!

order='one'

只允许元素集中的一个。

*

order='seq'

指示元素必须在列出的序列中出现。 该属性与元素列表的默认属性类似,但是要对序列分组,则需要该属性,如示例中所示,x1,y1x2,y2 是合法的,但是任何其他组合都不是合法的。 作用与 DTD 中的括号相同。

order='many'

元素可以按照任意顺序显示(或不显示)。

dt:type=datatype

指定元素应包含整数。 有关基元数据类型的列表,请参见“XDR 架构数据类型参考”。

备注

“元素类型”一词是指所有共享一个名称的元素是实例的元素类型。 元素类型在架构中声明;元素在文档中出现。 元素类型使用 ElementType 元素类型声明。

示例

另请参见

参考

XDR 架构数据类型参考