मैं संख्या के आंशिक दशमलव स्थानों की संख्या को बिल्कुल 2 तक सीमित करना चाहता हूं।
उदाहरण के लिए - 1.00 मान्य है, लेकिन 1, 1.0 और 1.000 सभी अमान्य हैं।
यह एक समान सवाल है: एक्सएम के दशमलव स्थानों की मात्रा निर्दिष्ट करें: एक्सएमएल स्कीमा में दशमलव
और यह उत्तर दिया गया था:
<xs:simpleType name="twoPlacesDecimal" id="twoPlacesDecimal">
<xs:restriction base="xs:decimal">
<xs:fractionDigits fixed="true" value="2" />
</xs:restriction>
</xs:simpleType>
दुर्भाग्यवश, यह केवल दशमलव स्थानों की संख्या को 2 तक सीमित करता है, और संख्याओं को शून्य या एक दशमलव स्थान के साथ अनुमति देता है।
उत्तर:
जवाब के लिए 2 № 1जब मैंने अतीत में ऐसा किया है, तो मैंने एक रेगेक्स मैचर का उपयोग किया था। आप जिस रेगेक्स का उपयोग कर सकते हैं वह इस तरह है:
<xsd:simpleType name="exactlyTwoAfterDecimal">
<xsd:restriction base="xsd:token">
<xsd:pattern value="^-?d+.dd$"/>
</xsd:restriction>
</xsd:simpleType>
जवाब के लिए 3 № 2
मुझे नहीं लगता कि आप इसके साथ ऐसा कर सकते हैं total
तथा fractionDigits
अकेले प्रतिबंध, लेकिन यह रेगेक्स पैटर्न प्रतिबंध के साथ संभव हो सकता है, जैसे कुछ:
<xs:restriction base="decimal">
<xs:pattern value="[+-]?d+.d{2}"/>
</xs:restriction>
जवाब के लिए 3 № 3
आप दशमलव स्थानों की संख्या को मजबूर कर सकते हैंवास्तव में दो regex का उपयोग कर, लेकिन यह बुद्धिमान है? आप "इस स्कीमा के अनुरूप होने वाले दस्तावेजों को उत्पन्न करने वाले किसी भी व्यक्ति के लिए ज़िंदगी कठिन बना रहे हैं। उदाहरण के लिए, वे एक्सएसएलटी या एक्सक्वियर द्वारा उत्पादित डिफ़ॉल्ट क्रमिकरण का उपयोग करने में सक्षम नहीं होंगे, बल्कि उन्हें स्वयं लिखना होगा। क्या यह स्वीकार नहीं करता है कि यह किस चीज को स्वीकार करता है, उसमें कुछ और उदार होने के लिए कल्पना को बेहतर बनाना है?