2016-04-07 9 views
1

I unten Format in XSD verwenden sowohl String und Datetime-Format für einen Tag für die AnnahmeUnion von xs: dateTime und xs: string?

<xs:simpleType name="dateTime-or-string"> 
    <xs:union memberTypes="xs:dateTime xs:string"/> 
</xs:simpleType> 

<xs:complexType name="CustomDate"> 
      <xs:simpleContent> 
       <xs:extension base="dateTime-or-string"> 
        <xs:attribute name="nullable" type="xs:string" /> 
       </xs:extension> 
      </xs:simpleContent> 
</xs:complexType> 
<xs:element name="StartDate" type="CustomDate"> 

Bitte helfen, wenn dies falsch ist.

Mein Tag wie folgt sein:

<lastdate nullable="true"/> or <lastdate>2015-08-05+02:00</lastdate> 
+0

das könnte Ihnen helfen - http://stackoverflow.com/questions/18796258/define-an-xsd-element-which-can-be-a-datetime-or-empty-with-an-attribute – Sampada

+0

Ein Potenzial Komplikation: Wenn Sie möchten, dass ' 2015-08-05 + 02: 00' als Datum abgeglichen wird, möchten Sie wahrscheinlich xs: date in der Union und nicht nur xs: dateTime. Außerdem deklariert Ihr Typ kein Attribut namens "nullable" - denken Sie an 'xsi: nil'? –

Antwort

0

Da xs:dateTime ist eine strenge Untergruppe von xs:string, gibt es keine Notwendigkeit zur Vereinigung der beiden Arten zusammen. Sie können einfach xs:string von selbst verwenden.

+0

Richtig, was die Menge der akzeptierten XML-Dokumente betrifft. In Bezug auf die Informationen, die durch den Validierungsprozess generiert werden (Post-Schema-Validierungs-Infoset oder PSVI) und möglicherweise für nachgelagerte Prozessoren verfügbar sind, kann ein Konsument von Dokumenten Dokumente an eine Warteschlange weiterleiten oder sie auf eine Art verarbeiten, wenn Der Wert von 'lastdate' wird als eine Instanz von xs: dateTime erkannt und andernfalls auf eine andere Art und Weise. Es kann auch für menschliche Leser des Schemas einen Unterschied machen: Es kann helfen, Erwartungen zu setzen. –

+0

Verwenden Sie also eine Vereinigung von 'xs: dateTime' und' xs: string', wenn (1) Sie eine völlig imaginäre (aber theoretisch mögliche) PSVI-Verarbeitung nutzen möchten oder (2) Sie das gerne kommunizieren möchten a dateTime geh hier hin, aber, was zum Teufel, eine Saite ist gut genug. :-) – kjhughes

+0

Du bist nicht so beeindruckt, wie ich gehofft hätte :), aber ja, ich denke, du hast das Wesentliche. Ich bin mir nicht sicher, ob die PSVI-Verarbeitung imaginär ist: Als ich das letzte Mal nachgesehen habe, dachte ich, dass Xerces Zugriff auf das PSVI gewährte, und jeder schemafähige XPath- oder XSLT-Prozessor dem "lastdate" -Element ebenfalls unterschiedliche Typen zuweist. Und reale Vokabulare sagen gelegentlich Dinge wie "Wenn möglich, benutze xs: date, und der Wert wird entsprechend behandelt; Nicht-Datum-Strings werden als gültig akzeptiert, weil wir keine Wahl haben, aber sie werden nicht verarbeitet als Daten. " –