XML स्कीमा minOccurs / maxOccurs डिफ़ॉल्ट मान


214

मैं सोच रहा हूँ कि XML स्कीमा विनिर्देश इन मामलों को कैसे संभालता है:

<xsd:element minOccurs="1" name="asdf"/>

कोई अधिकतम राशि नहीं दी गई -> क्या यह कार्डिनलिटी है [1..1]?

<xsd:element minOccurs="5" maxOccurs="2" name="asdf"/>

मुझे लगता है कि यह केवल अमान्य है?

<xsd:element maxOccurs="2" name="asdf"/>

क्या यह कार्डिनलिटी [0..2] या [1..2] है?

क्या कोई "आधिकारिक" परिभाषा है कि XML स्कीमा कल्पना इन मामलों को कैसे संभालती है?

जवाबों:


327

के लिए डिफ़ॉल्ट मान हैं minOccursऔर maxOccurs1. इस प्रकार हैं:

<xsd:element minOccurs="1" name="asdf"/>

कार्डिनैलिटी है [१-१] नोट: यदि आप केवल न्यूनतम विशेषता निर्दिष्ट करते हैं , तो यह १ से अधिक नहीं हो सकती है, क्योंकि मैक्सोक्यूर्स के लिए डिफ़ॉल्ट मान १ है।

<xsd:element minOccurs="5" maxOccurs="2" name="asdf"/>

अमान्य

<xsd:element maxOccurs="2" name="asdf"/>

कार्डिनैलिटी [1-2] नोट है: यदि आप केवल अधिकतम लाभ विशेषता को निर्दिष्ट करते हैं , तो यह 1 से छोटा नहीं हो सकता है, क्योंकि minOccurs के लिए डिफ़ॉल्ट मान 1 है।

<xsd:element minOccurs="0" maxOccurs="0"/>

एक वैध संयोजन है जो तत्व को निषिद्ध बनाता है।

अधिक जानकारी के लिए http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints देखें


<xsd: element minOccurs = "0" maxOccurs = "0" /> मेरे मामले में काम नहीं कर रहा है।
आशीष

4
उस स्थिति में, xsd में इस तत्व को परिभाषित न करें
तपसावी

66

एक पुराने, आमतौर पर पूछे जाने वाले प्रश्न का नया, विस्तारित उत्तर ...

डिफ़ॉल्ट मान

  • बाधाएं minOccursऔर maxOccurs डिफ़ॉल्ट में1 बाधा ।

सामान्य मामलों की व्याख्या

<xsd:element name="A"/>

साधन Aकी आवश्यकता है और एक बार बिल्कुल दिखाई देना चाहिए ।


<xsd:element name="A" minOccurs="0"/>

साधन Aहै वैकल्पिक और प्रकट हो सकता है एक बार ज्यादा से ज्यादा


 <xsd:element name="A" maxOccurs="unbounded"/>

साधन Aकी आवश्यकता है और कई बार असीमित संख्या दोहरा सकते हैं ।


 <xsd:element name="A" minOccurs="0" maxOccurs="unbounded"/>

साधन Aहै वैकल्पिक और एक दोहरा सकते हैं समय की असीमित संख्या


यह सभी देखें

  • W3C XML स्कीमा भाग 0: प्राइमर

    सामान्य तौर पर, एक तत्व दिखाई देने की आवश्यकता होती है, जब minOccurs का मान 1 या अधिक होता है। एक तत्व दिखाई दे सकता है की अधिकतम संख्या इसकी घोषणा में एक मैक्सकोर्स विशेषता के मूल्य से निर्धारित होती है। यह मान सकारात्मक पूर्णांक हो सकता है जैसे कि 41, या यह इंगित करने के लिए अनबाउंड शब्द कि अधिकतम संख्या नहीं है। दोनों minOccurs और maxOccurs विशेषताओं के लिए डिफ़ॉल्ट मान 1 है। इस प्रकार, जब एक तत्व जैसे कि टिप्पणी को अधिकतमऑक्सर्स विशेषता के बिना घोषित किया जाता है, तो तत्व एक से अधिक बार नहीं हो सकता है। सुनिश्चित करें कि यदि आप केवल minOccurs विशेषता के लिए कोई मान निर्दिष्ट करते हैं, तो यह अधिकतम मानों के डिफ़ॉल्ट मान से कम या बराबर है, अर्थात यह 0 या 1. है, यदि आप केवल maxOccurs विशेषता के लिए कोई मान निर्दिष्ट करते हैं, तो यह होना चाहिए मिनोकर्स के डिफ़ॉल्ट मान से अधिक या उसके बराबर यानी 1 या अधिक।

  • W3C XML स्कीमा भाग 1: संरचनाएं दूसरा संस्करण

    <element
      maxOccurs = (nonNegativeInteger | unbounded)  : 1
      minOccurs = nonNegativeInteger : 1
      >
    
    </element>

0

संक्षिप्त जवाब:

जैसा कि xsd में लिखा है:

<xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
<xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>

यदि आप संख्या के साथ एक विशेषता प्रदान करते हैं, तो संख्या सीमा है। अन्यथा विशेषता बिल्कुल एक बार दिखाई देनी चाहिए


-2

उदाहरण:

एक्सएमएल

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="country.xsl"?>
<country xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="country.xsd">
    <countryName>Australia</countryName>
    <capital>Canberra</capital>
    <nationalLanguage>English</nationalLanguage>
    <population>21000000</population>
    <currency>Australian Dollar</currency>
    <nationalIdentities>
        <nationalAnthem>Advance Australia Fair</nationalAnthem>
        <nationalDay>Australia Day (26 January)</nationalDay>
        <nationalColour>Green and Gold</nationalColour>
        <nationalGemstone>Opal</nationalGemstone>
        <nationalFlower>Wattle (Acacia pycnantha)</nationalFlower>
    </nationalIdentities>
    <publicHolidays>
        <newYearDay>1 January</newYearDay>
        <australiaDay>26 January</australiaDay>
        <anzacDay>25 April</anzacDay>
        <christmasDay>25 December</christmasDay>
        <boxingDay>26 December</boxingDay>
        <laborDay>Variable Date</laborDay>
        <easter>Variable Date</easter>
        <queenBirthDay>21 April (Variable Date)</queenBirthDay>
    </publicHolidays>
    <states>
        <stateName><Name>NSW -  New South Wales</Name></stateName>
        <stateName><Name>VIC -  Victoria</Name></stateName>
        <stateName><Name>QLD -  Queensland</Name></stateName>
        <stateName><Name>SA -  South Australia</Name></stateName>
        <stateName><Name>WA -  Western Australia</Name></stateName>
        <stateName><Name>TAS -  Tasmania</Name></stateName>
    </states>
    <territories>
        <territoryName>ACT -  Australian Capital Territory</territoryName>
        <territoryName>NT -  Northern Territory</territoryName>
    </territories>
</country>

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="country">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="countryName" type="xs:string"/>
                <xs:element name="capital" type="xs:string"/>
                <xs:element name="nationalLanguage" type="xs:string"/>
                <xs:element name="population" type="xs:double"/>
                <xs:element name="currency" type="xs:string"/>
                <xs:element name="nationalIdentities">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="nationalAnthem" type="xs:string"/>
                        <xs:element name="nationalDay" type="xs:string"/>
                        <xs:element name="nationalColour" type="xs:string"/>
                        <xs:element name="nationalGemstone" type="xs:string"/>
                        <xs:element name="nationalFlower" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
                </xs:element>
                <xs:element name="publicHolidays">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="newYearDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="australiaDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="anzacDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="christmasDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="boxingDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="laborDay" maxOccurs="1" type="xs:string"/>
                            <xs:element name="easter" maxOccurs="1" type="xs:string"/>
                            <xs:element name="queenBirthDay" maxOccurs="1" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="states">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="stateName" minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Name" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="territories">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="territoryName" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XSL:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes" version="4.0"/>
    <xsl:template match="/">
        <html>
            <body>          
                <xsl:for-each select="country">         
                    <xsl:value-of select="countryName"/><br/>
                    <xsl:value-of select="capital"/><br/>
                    <xsl:value-of select="nationalLanguage"/><br/>
                    <xsl:value-of select="population"/><br/>
                    <xsl:value-of select="currency"/><br/>              
                    <xsl:for-each select="nationalIdentities">
                        <xsl:value-of select="nationalAnthem"/><br/>
                        <xsl:value-of select="nationalDay"/><br/>
                        <xsl:value-of select="nationalColour"/><br/>
                        <xsl:value-of select="nationalGemstone"/><br/>
                        <xsl:value-of select="nationalFlower"/><br/>
                    </xsl:for-each>
                    <xsl:for-each select="publicHolidays">
                        <xsl:value-of select="newYearDay"/><br/>
                        <xsl:value-of select="australiaDay"/><br/>
                        <xsl:value-of select="anzacDay"/><br/>
                        <xsl:value-of select="christmasDay"/><br/>
                        <xsl:value-of select="boxingDay"/><br/>
                        <xsl:value-of select="laborDay"/><br/>
                        <xsl:value-of select="easter"/><br/>
                        <xsl:value-of select="queenBirthDay"/><br/>
                    </xsl:for-each>
                    <xsl:for-each select="states/stateName">
                        <xsl:value-of select="Name"/><br/>
                    </xsl:for-each>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

परिणाम:

Australia
Canberra
English
21000000
Australian Dollar
Advance Australia Fair
Australia Day (26 January)
Green and Gold
Opal
Wattle (Acacia pycnantha)
1 January
26 January
25 April
25 December
26 December
Variable Date
Variable Date
21 April (Variable Date)
NSW - New South Wales
VIC - Victoria
QLD - Queensland
SA - South Australia
WA - Western Australia
TAS - Tasmania

1
पूछे गए प्रश्न से आपके उत्तर का कोई लेना देना नहीं है। शायद आपने इसे गलत प्रश्न पर पोस्ट किया है? किसी भी घटना में, इसे हटा दिया जाना चाहिए। धन्यवाद।
kjhughes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.