2009-11-22 10 views
7

Я строю DTD, который имеет элемент fuel_system.Элемент, который может иметь только одно из двух значений текста?

Я хочу ограничить текст между тегом <fuel_system>. Это должно быть только carbureted или fuel-injected. Как я могу это сделать?

Я не упоминаю что-то вроде этого => тип атрибута (карбюраторный, с топливом), потому что я хочу заставить это правило в тегах <fuel_system>, а не атрибут fuel_system.

ответ

10

При определении элемента в DTD нет способа ограничить текст внутри элемента. вы можете только указать, что может содержать другой элемент (дочерние элементы) и его порядок, или вы можете сказать, что элемент содержит текст или смесь 2.

поэтому, в основном у вас есть 2 варианта ограничения <fuel-system> : либо объявить его как атрибут (<fuel-system type="fuel-injected"/>), либо объявить дочерние элементы <fuel-injected> и <carburated>. выбор между этими двумя вариантами зависит от того, что вы пытаетесь описать и что изменится в зависимости от типа fuel-system.

(грамматика для объявления элемента определяется here)

примеры: Первый вариант, атрибуты

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

второй вариант, дочерние элементы

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

убеждает мой учитель не представляется возможным в DTD и я построю мой DTD как ваши response..Thanks для вашего ответа :) –

4

У есть, чтобы быть DTD? Является ли XML-схема опцией?

Using XML Schema you can restrict element text to an enumerated list of values:

<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> 
+0

Вашего ответ это еще один ответ моего долга .Большое спасибо :) –

 Смежные вопросы

  • Нет связанных вопросов^_^