2009-11-22 28 views
7

Tôi đang xây dựng một DTD có phần tử fuel_system.Phần tử chỉ có thể có một trong hai giá trị văn bản?

Tôi muốn giới hạn văn bản giữa thẻ <fuel_system>. Nó chỉ phải là carbureted hoặc fuel-injected. Tôi có thể làm cái này như thế nào?

Tôi không đề cập đến một cái gì đó như thế này => loại thuộc tính (carbureted, bơm nhiên liệu), bởi vì tôi muốn ép buộc quy tắc này trong các thẻ <fuel_system>, chứ không phải thuộc tính của fuel_system.

Trả lời

10

khi xác định phần tử trong DTD, không có cách nào để hạn chế văn bản bên trong phần tử. bạn chỉ có thể biết phần tử con (phần tử con) nào có thể chứa và thứ tự của chúng hoặc bạn có thể cho biết phần tử chứa văn bản hoặc hỗn hợp của số 2.

, về cơ bản bạn có 2 tùy chọn để hạn chế <fuel-system> : hoặc khai báo dưới dạng thuộc tính (<fuel-system type="fuel-injected"/>) hoặc khai báo các phần tử con <fuel-injected><carburated>. lựa chọn giữa 2 tùy chọn này phụ thuộc vào những gì bạn đang cố gắng mô tả và điều gì sẽ thay đổi tùy thuộc vào loại fuel-system.

(ngữ pháp cho việc kê khai của một nguyên tố được xác định here)

ví dụ: đầu tiên lựa chọn, thuộc tính

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

tùy chọn thứ hai, yếu tố con

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

tôi thuyết phục để giáo viên của tôi nó không phải là có thể trong DTD và tôi sẽ xây dựng DTD tôi như response..Thanks của bạn cho câu trả lời của bạn :) –

4

Liệu nó là một DTD? XML Schema là một tùy chọn?

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

phản ứng của bạn là một câu trả lời khác của nhiệm vụ của tôi .Cảm ơn rất nhiều :) –

Các vấn đề liên quan