2011-09-09 13 views
5

मैं अपने XSD में इस राशि से ठीक सत्यापित किया जा रहा:होने एक खाली XS: तिथि तत्व XSD

<xs:element name="End_Date" type="xs:date" minOccurs="0"/> 

मैं सत्यापन पारित चाहते हैं कि वहाँ एक तारीख है या यदि अगर वहाँ एक खाली नोड

है <End_Date>2011-05-31T00:00:00.000</End_Date> रूप में अच्छी तरह <End_Date></End_Date>

के रूप में मैं modifiy कैसे XSD यह इतना बनाने के लिए ठीक होना चाहिए?

nillable="true"

और

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" 

और

उनमें से
    <xs:element name="End_Date"> 
        <xs:simpleType> 
         <xs:union memberTypes="xs:date"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"> 
         <xs:enumeration value=""/> 
         </xs:restriction> 
         </xs:simpleType> 
         </xs:union> 
        </xs:simpleType> 
       </xs:element> 

कोई भी काम किया:

मैं अलग अलग बातें की कोशिश की।

त्रुटि:

Error detected : The 'xxxxxxxxxx:End_Date' element is invalid - The value '' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:date' - The string '' is not a valid XsdDateTime value.

उत्तर

6

शायद आप xs: date और xs: dateTime के बीच के अंतर के बारे में उलझन में हैं। आपने xs का उपयोग किया है: आपकी स्कीमा में दिनांक, लेकिन आपका उदाहरण एक एक्सएस है: डेटटाइम।

वहाँ प्राप्त करने के तीन तरीके आप क्या चाहते हैं:

(क) एक प्रकार है कि का एक संघ है परिभाषित करते हैं (XS: DATETIME और (XS के प्रतिबंध: स्ट्रिंग केवल अनुमति देता है ""))

(बी) xs की एक सूची परिभाषित करें: minLength = 0, maxLength = 1

(c) तत्व को परिभाषित करने के लिए परिभाषित करें। इस मामले में उदाहरण को xsi: nil = "true" कहना होगा, जो मेरे दिमाग में सुविधा को बेकार बनाता है।

यदि आप इनमें से किसी एक को आजमाते हैं और यह काम नहीं करता है, तो हमें बताएं कि आपने क्या किया और वास्तव में यह कैसे विफल हुआ।

+0

(ए) ने नौकरी की, धन्यवाद – MoreCoffee

0

xsi: nill = सच निश्चित रूप से लंबे समय के रूप में मान्य किया जाना चाहिए के रूप में आप के रूप में nillable स्कीमा तत्व को परिभाषित। आप किस वैधकर्ता का उपयोग कर रहे हैं?

स्कीमा:

<xs:schema xmlns="http://myNS" targetNamespace="http://myNS" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="End_Date" nillable="true" type="xs:dateTime" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

उदाहरण:

<ns0:Root xmlns:ns0="myNS"> 
    <End_Date xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
</ns0:Root> 

मान्य है।

+0

मैं सत्यापन के लिए नेट का उपयोग कर रहा हूँ। उदाहरण के तौर पर आपका क्या मतलब है? मेरे पास एक एक्सएसडी है। मैंने अपने xs में nillable = "true" जोड़ने का प्रयास किया: तत्व और मुझे एक ही त्रुटि संदेश मिलता है। – MoreCoffee

+0

मुझे लगता है कि आप xsd के खिलाफ एक XML को सत्यापित करने का प्रयास कर रहे हैं? मेरे जवाब में "उदाहरण" xml मान्य करने के लिए है।तो xsd में आप nillable विशेषता = true के साथ End_Date नामक एक शून्य प्रकार को परिभाषित करते हैं। फिर जब आप End_Date तत्व को लेखक करते हैं तो xml दस्तावेज़ में आप xsi: nil = "true" विशेषता का उपयोग कर सकते हैं। जैसा कि मैंने पहले कहा था निश्चित रूप से मान्य होगा। –

+0

अभी भी नहीं जाना है: (मेरे एक्सएमएल में मान्य करने के लिए मैंने कहा: ' 'में एक्सएसडी मैंने रखा: ' 'मुझे त्रुटि मिलती है: \t' 'http://cdcixis-cm.com/gbo: End_Date 'तत्व अमान्य है - मान' 'अपने डेटाटाइप' http://www.w3.org/2001/XMLSchema:date 'के अनुसार अमान्य है - स्ट्रिंग' 'वैध XsdDateTime मान नहीं है।' – MoreCoffee

1
Set Type="xs:date", derivedBy="list" and minOccurs="0" 

which looks like this in your XML Schem Document 

<xs:element name="EffectiveDt" nillable="true" minOccurs="0"> 
    <xs:simpleType> 
    <xs:list itemType="xs:date"/> 
    </xs:simpleType> 
</xs:element> 

This will surely help you, I tried in my Code Works perfect. 

Validate Your XML against XSD here

I am using this online XML validation against XSD tool. 
+0

इस रणनीति के साथ मुझे मिली एकमात्र समस्या यह है कि आप तत्वों की एक सूची की आपूर्ति करने की अनुमति देते हैं ... <प्रभावी डीटी /><प्रभावी डीटी /><प्रभावी डीटी />< EffectiveDt /> ... –

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