元素只能有两个文本值之一?元素只能有两个文本值之一?(Element that can only h

2019-05-12 10:03发布

我构建具有一个DTD fuel_system元素。

我想限制之间的文本<fuel_system>标签。 必须只carburetedfuel-injected 。 我怎样才能做到这一点?

我不提这样的事情=>属性类型(化油器,燃油喷射),因为我想迫使这条规则<fuel_system>标签,而不是属性fuel_system

Answer 1:

在一个DTD定义的元素时,也没有办法来限制元件内的文本 。 你只能告诉什么其他元素(子元素),它可能包含与它们的顺序,或者你可以告诉元素包含文本,或2的混合物。

这样,基本上就具有用于限制两个选项<fuel-system> :要么声明它作为属性( <fuel-system type="fuel-injected"/>或声明子元素<fuel-injected><carburated> 。 这些两个选项之间的选择取决于你试图描述什么,什么会根据类型改变fuel-system

(对于元素的声明的语法被定义此处 )

例子第一个选项 ,属性

<!ELEMENT fuel-system EMPTY>
<!ATTLIST fuel-system (fuel-injected|carburated) #REQUIRED>

第二个选项 ,子元素

<!ELEMENT fuel-system (fuel-injected|carburated)>
<!ELEMENT fuel-injected ...>
<!ELEMENT carburated ...>


Answer 2:

必须是一个DTD? 是XML模式的选项?

使用XML Schema可以限制元素文本值的枚举列表 :

<xs:element name="fuel-system">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="fuel-injected"/>
      <xs:enumeration value="carbourated"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


文章来源: Element that can only have one of two text values?
标签: xml dtd xml-dtd