XSD: xs: पूर्णांक और xs: int के बीच अंतर क्या है?


111

मैं XSD बनाने के लिए शुरू कर दिया और के लिए उदाहरण के कुछ पाया है xs:integerऔर xs:int

बीच क्या अंतर है xs:integerऔर xs:int? मुझे कब उपयोग करना चाहिए xs:integer? मुझे कब उपयोग करना चाहिए xs:int?

जवाबों:


110

अंतर निम्नलिखित है: xs:intएक हस्ताक्षरित 32-बिट पूर्णांक है। xs:integerएक पूर्णांक अनबाउंड वैल्यू है। विवरण के लिए देखें https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp उदाहरण के लिए, XJC (Java) के Integerलिए xs:intऔर इसके BigIntegerलिए जनरेट करता है xs:integer

नीचे की रेखा: xs:intयदि आप क्रॉस प्लेटफॉर्म पर काम करना चाहते हैं तो उपयोग करें और सुनिश्चित करें कि आपके नंबर बिना किसी समस्या के पास हो जाएंगे। यदि आप बड़ी संख्या चाहते हैं - xs:longइसके बजाय उपयोग करें xs:integer(यह उत्पन्न हो जाएगा Long)।


2
सैक्सन 9 एचई (होम संस्करण) केवल 'xs: पूर्णांक , but not xs: int` या का समर्थन करता है xs:long
निशि

13
w3cshools आधिकारिक नहीं है। उचित परिभाषाओं का संदर्भ क्यों नहीं? w3.org/2001/XMLSchema.xsd बताता है कि पूर्णांक उदाहरण के लिए +/- 9223372036854775808 से जुड़ा है। इसके अलावा, क्रॉस प्लेटफॉर्म का (आज्ञाकारी) xml से कोई लेना-देना नहीं है।
पॉल हरग्रेव्स

@ निशि, सैक्सन 9 एचई की तरह लगता है अनुरूप नहीं है। Saxon.sourceforge.net पेज को पढ़ने पर ऐसा लगता है कि केवल ईई संस्करण ही अनुरूप है।
पॉल हरग्रेव्स

2
@PaHHargreaves, Saxon 9 HE (जहाँ तक मुझे पता है) एक पूरी तरह से अनुरूप XSLT प्रोसेसर: xs: int प्रकार में सेट नहीं है एक बुनियादी XSLT प्रोसेसर का समर्थन करना आवश्यक है । यदि आपका मतलब है कि यह एक एक्सपीडी प्रोसेसर नहीं है, तो यह सच है लेकिन भ्रामक है: यह बिल्कुल एक्सएसडी प्रोसेसर नहीं है।
सीएम सर्बर्ग-मैकक्वीन

8
@PaulHargreaves, के बारे में +/- 9223372036854775808 की अधिकतम किया जा रहा है अपनी टिप्पणी "XS: पूर्णांक" गलत है: XMLSchema.xsd परिभाषित करता है कि एक "XS: लंबे" की एक प्रतिबंध है "XS: पूर्णांक" +/- 9223372036854775808 लिए
metatechbe

30

XS: पूर्णांक के साथ fractionDigits शून्य करने के लिए और एक शाब्दिक अंतरिक्ष जो दशमलव बिंदु और अनुगामी शून्य जो अन्यथा कानूनी होगा मनाही के साथ सेट पहलू, दशमलव: प्रकार XS की एक प्रतिबंध है। इसका कोई न्यूनतम या अधिकतम मूल्य नहीं है, हालांकि परिमित आकार की मशीनों में चलने वाले कार्यान्वयन को मनमाने ढंग से बड़े या छोटे मूल्यों को स्वीकार करने में सक्षम होने की आवश्यकता नहीं है। (उन्हें 16 दशमलव अंकों के साथ मूल्यों का समर्थन करना आवश्यक है।)

XS: पूर्णांक 2147483647 को maxInclusive पहलू सेट और -२१४७४८३६४८ को minInclusive पहलू के साथ लंबे समय,: प्रकार XS की एक प्रतिबंध है। (जैसा कि आप देख सकते हैं, यह दो-पूरक 32-बिट हस्ताक्षरित-पूर्णांक फ़ील्ड में आसानी से फिट होगा; xs: 64-बिट हस्ताक्षरित-पूर्णांक फ़ील्ड में लंबा फिट बैठता है।)

सामान्य नियम यह है: उस चीज़ का उपयोग करें जो आप कहना चाहते हैं। यदि किसी तत्व या विशेषता पर बाधा यह है कि इसका मान पूर्णांक होना चाहिए, xs: पूर्णांक कहता है कि संक्षिप्त रूप से। यदि बाधा यह है कि मान एक पूर्णांक होना चाहिए जिसे दो-पूरक प्रतिनिधित्व में अधिकतम 32 बिट्स के साथ व्यक्त किया जा सकता है, तो xs का उपयोग करें: int। (एक द्वितीयक लेकिन कभी-कभी महत्वपूर्ण चिंता यह है कि क्या आपकी टूल चेन एक से दूसरे के साथ बेहतर काम करती है। डेटा के लिए जो आपके टूल चेन की तुलना में अधिक समय तक जीवित रहेगा। पहले डेटा को सुनना बुद्धिमानी है; डेटा के लिए जो केवल टूल को खिलाने के लिए मौजूद है। यदि आप अपनी टूल चेन बदलते हैं, तो कोई भी रुचि नहीं होगी, टूल चेन को न सुनने का कोई कारण नहीं है।)


आप: परिमित आकार की मशीनों में चलने वाले कार्यान्वयन की आवश्यकता नहीं है [...] क्या मानक की आवश्यकता है कि अनंत मशीनों (जैसे ट्यूरिंग मशीन और सामान) पर चलने वाले कार्यान्वयन को स्वीकार करना चाहिए और पूरी तरह से सही सीमा का प्रतिनिधित्व करना चाहिए? :-) यह अच्छा होगा, क्योंकि ब्रह्मांड, भौतिकी के नियमों के साथ जैसा कि वे वर्तमान में ज्ञात हैं, ऐसी मशीनों को स्वीकार नहीं करता है।
जेपी स्टिग नीलसन 14

नहीं, विनिर्देश के पास अनंत मशीनों पर चलने वाले कार्यान्वयन के लिए विशेष नियम नहीं हैं; सभी कार्यान्वयनों को अनंत डेटाटिप्स के आंशिक कार्यान्वयन को नियंत्रित करने वाले नियमों से लाभान्वित होने की अनुमति है।
CM शेंबर्ग-मैक्क्वीन

6

मैं सिर्फ कुछ लोगों के लिए महत्वपूर्ण हो सकता है कि पैदल सेना का एक नोट जोड़ूंगा: यह कहना सही नहीं है कि xs: int "एक हस्ताक्षरित 32-बिट पूर्णांक है। शब्दों का वह रूप एक बाइनरी डिजिटल कंप्यूटर के भीतर मेमोरी (या रजिस्टर, आदि) में कार्यान्वयन का अर्थ है। XML चरित्र-आधारित है और अधिकतम 32-बिट हस्ताक्षरित मूल्य को "2147483647" (मेरे उद्धरण, निश्चित रूप से) के रूप में लागू करेगा, जो कि 32 बिट्स से बहुत अधिक है! क्या सच है कि xs: int (परोक्ष रूप से) xs का एक प्रतिबंध है: पूर्णांक जो अधिकतम और न्यूनतम अनुमत मानों को एक बिट के साथ 32-बिट पूर्णांक के संबंधित कार्यान्वयन-लागू सीमा के समान होने के लिए निर्धारित करता है।


इसमें कोई गारंटी नहीं है कि XSD के साथ मान्य स्रोत infoset वर्णों के अनुक्रम के रूप में आता है; यदि XSLT या XQuery के माध्यम से निर्मित दस्तावेज़ उदाहरण को मान्य करने के लिए स्कीमा का उपयोग किया जाता है, तो हर संभावना है कि 32-बिट पूर्णांकों के लिए पारंपरिक प्रतिनिधित्व का उपयोग करते हुए स्मृति में एक x: int मान का प्रतिनिधित्व किया जा सकता है।
सीएम सर्पबर्ग-मैकक्वीन

@ CMSperberg-McQueen, मुझे यकीन नहीं है कि मैं आपकी बात समझूंगा। xs: int एक सीमा के साथ एक प्रकार है, यह कैसे संग्रहीत किया जाता है XSD के लिए अप्रासंगिक है और कुछ भी जो हार्ड कोड "int" के रूप में स्मृति में एक 32 बिट हस्ताक्षरित पूर्णांक समस्याओं के लिए पूछ रहा है, उदाहरण के लिए, एक अलग XSD चुना जाता है जो कहता है कि एक int रेंज में भिन्न होता है जैसा कि w3c XSD में परिभाषित है।
पॉल हरग्रेव्स

1
@PaHHargreaves यह थोड़ा पांडित्यपूर्ण बिंदु है (उत्तर की भावना में)। जवाब यह है कि यह साफ कहने के लिए सही नहीं है सही है कि XS: पूर्णांक है एक हस्ताक्षरित 32-बिट दुक्की-पूरक पूर्णांक। लेकिन जवाब यह भी कहता है कि चूंकि XML चरित्र-आधारित है, xs का अधिकतम मूल्य: int चरित्र स्ट्रिंग "2147483807" है; जरूरी नहीं है कि पिछले थोड़ा सा है। XSD प्रकार बहुत सारे सिस्टम द्वारा उपयोग किए जाते हैं, उदाहरण के लिए XQuery डेटाबेस, जहाँ एक xs: int मान यूनिकोड वर्णों की एक स्ट्रिंग की तुलना में 32-बिट ट्वॉइस-पूरक फ़ील्ड में प्रतिनिधित्व करने की अधिक संभावना है।
CM Sperberg-McQueen

"" के स्थान पर "का प्रतिनिधित्व करता है" का उपयोग करें
क्रिस वॉल्श
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.