2012-08-01 14 views
6

मैं एक एक्सएमएल फ़ाइल में एक नंबर को किसी अन्य सरल पूर्णांक प्रकार के साथ स्टोर करना चाहता हूं, लेकिन उपयोगकर्ता को हेक्साडेसिमल प्रारूप में नंबर दर्ज करने की अनुमति देता हूं। क्या एक्सएमएल मानक इस के लिए अनुमति देता है क्योंकि मुझे कुछ भी प्रासंगिक नहीं मिल रहा है?एक्सएमएल एक्सएस: int हेक्साडेसिमल मान

उदाहरण के लिए, यदि XSD का कहना है:

<value>0xFF00FF</value> 

या जो कुछ भी हेक्साडेसिमल के लिए अंकन होगा:

<xs:element name="value" type="xs:integer" use="required" /> 

तो मैं एक्सएमएल कहने में सक्षम होना चाहता हूँ।

स्पष्ट रूप से मैं इसे आजमा सकता हूं लेकिन यह केवल एक विशेष कार्यान्वयन में समर्थन साबित करता है, भले ही यह मानक न हो। मुझे विशेष रूप से परवाह नहीं है कि एक्सएमएल को सहेजना आधार खो देता है।

उत्तर

4

मुझे ऐसा नहीं लगता है। xs:integer एक व्युत्पन्न/xs:decimal के सबसेट प्रकार है, जो प्रतिनिधित्व defined as

दशमलव एक दशमलव संकेतक के रूप में एक अंतराल से अलग दशमलव अंक की एक निश्चित-लम्बाई अनुक्रम से मिलकर एक शाब्दिक प्रतिनिधित्व (# x30- # x39) है है । एक वैकल्पिक अग्रणी संकेत की अनुमति है। यदि संकेत छोड़ा गया है, तो "+" माना जाता है। अग्रणी और पिछला शून्य शून्य हैं। यदि आंशिक भाग शून्य है, तो अवधि और निम्न शून्य (एस) को छोड़ा जा सकता है। उदाहरण के लिए: -1.23, 12678967.543233, +100000.00, 210.

आप 0x को हटा सकते हैं और इसे हेक्सबाइनरी पर सेट कर सकते हैं, हालांकि आप संख्या को अर्थपूर्ण खो देते हैं।

2

एक्सएसडी इसकी अनुमति नहीं देता है।

लेकिन XSD 1.1 पूर्व शाब्दिक पहलुओं सहित कार्यान्वयन से परिभाषित पहलुओं की अनुमति है, और सैक्सन इस स्वतंत्रता का शोषण करने वाली सैक्सन प्रदान करने के लिए: preprocess यहाँ वर्णित पहलू:

http://www.saxonica.com/documentation/#!schema-processing/extensions11/preprocess

यह आपको स्वीकार करने की अनुमति होगी हेक्साडेसिमल नोटेशन एक पूर्णांक प्रकार के एक व्याख्यात्मक प्रतिनिधित्व के रूप में। केवल दोष (शायद एक बड़ा!) यह है कि यह केवल सैक्सन के साथ काम करेगा।

4

मैं तत्व में का उपयोग करता हूं।

<xs:element name="value" use="required"> 
    <xs:simpleType> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="0x[0-9A-Fa-f]+|[0-9]+"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

यह आपको दोनों दशमलव और हेक्साडेसिमल संख्या (अनिवार्य 0x उपसर्ग के साथ) स्टोर करने के लिए अनुमति देता है। हालांकि, स्ट्रिंग को किसी संख्या में कनवर्ट करते समय आपको इसे विशेष रूप से संभालना होगा।

1

मुझे इसकी आवश्यकता है और यहां घायल हो गया है।

यहां एक 32 बिट हस्ताक्षरित पूर्णांक प्रकार है जो आपको मूल्य या तो हेक्स या दशमलव के रूप में दर्ज करने की अनुमति देगा।

<xs:simpleType name="U32BitHexInt"> 
    <xs:union memberTypes="xs:unsignedInt"> 
    <xs:simpleType> 
     <xs:restriction base="xs:token"> 
     <xs:pattern value="0x[0-9A-Fa-f]{8}"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:union> 
</xs:simpleType> 
संबंधित मुद्दे