2009-11-22 4 views
7

मैं एक डीटीडी का निर्माण कर रहा हूं जिसमें fuel_system तत्व है।तत्व जो केवल दो पाठ मानों में से एक हो सकता है?

मैं <fuel_system> टैग के बीच पाठ को प्रतिबंधित करना चाहता हूं। यह केवल carbureted या fuel-injected होना चाहिए। मैं यह कैसे कर सकता हूँ?

मुझे इस => विशेषता प्रकार (कार्बोरेटेड, ईंधन-इंजेक्शन) जैसे कुछ का उल्लेख नहीं है, क्योंकि मैं इस नियम को <fuel_system> टैग में मजबूर करना चाहता हूं, fuel_system की विशेषता नहीं।

उत्तर

10

डीटीडी में किसी तत्व को परिभाषित करते समय, तत्व के अंदर टेक्स्ट को प्रतिबंधित करने का कोई तरीका नहीं है। आप केवल यह बता सकते हैं कि इसमें कौन से अन्य तत्व (बाल तत्व) हो सकते हैं और उनका ऑर्डर, या आप यह बता सकते हैं कि तत्व में टेक्स्ट, या 2.

का मिश्रण है, इसलिए मूल रूप से आपके पास <fuel-system> को प्रतिबंधित करने के लिए 2 विकल्प हैं : या तो इसे एक विशेषता के रूप में घोषित करें (<fuel-system type="fuel-injected"/>), या बच्चों के तत्व <fuel-injected> और <carburated> घोषित करें। उन 2 विकल्पों के बीच की पसंद इस बात पर निर्भर करती है कि आप क्या वर्णन करने की कोशिश कर रहे हैं और 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 में संभव नहीं है और मैं अपने जवाब :) के लिए अपने response..Thanks की तरह मेरे DTD का निर्माण करेगी –

4

क्या यह है एक डीटीडी होने के लिए? एक्सएमएल स्कीमा एक विकल्प है?

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

आपकी प्रतिक्रिया एक मेरा कर्तव्य का एक और जवाब है ।बहुत बहुत धन्यवाद :) –

संबंधित मुद्दे