2008-12-11 5 views
13

Ich brauche eine Zeichenfolge für die Groß- und Kleinschreibung in meiner XML-Schema (.xsd) -Datei. Ich kann die Groß-/Kleinschreibung beachten, indem ich Folgendes tue.XML Schema Case Insensitive Enumeration von Simple Type String

<xs:simpleType name="setDigitalPointType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[Oo][Nn]" /> 
     <xs:pattern value="[Oo][Ff][Ff]" /> 
    </xs:restriction> 
</xs:simpleType> 

Das einzige Problem ist, dass ich keine Aufzählungswerte erhalten. Ich werde den netten Intellense nicht bekommen, wenn ich Visual Studio benutze, um mein XML zu schreiben. Das Folgende wird mir Aufzählungen geben, aber es ist Groß- und Kleinschreibung.

<xs:simpleType name="setDigitalPointType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="on" /> 
     <xs:enumeration value="off" /> 
    </xs:restriction> 
</xs:simpleType> 

Das wird meine Aufzählung gibt Sie mir aber, wenn ich jemals einen Wert von „On“, „ON“ oder „eine“ fehlschlagen Überprüfung erhalten.

Ich möchte die Aufzählung von "on", "off" und ermöglichen die Eingabe von case insensitive Versionen.

Antwort

10

IBM developer hat an article, wie XSLT zu verwenden, um den Aufbau der vollständigen Satz von Aufzählungs Alternativen in einer automatisierten Weise durchzuführen. Es wird als eine Problemumgehung für das Fehlen von Auflistungen, die Groß-und Kleinschreibung nicht beachten, dargestellt.

0

Nun, könnten Sie einfach alle auflisten die Permutationen als Muster :)

+0

könnte ich, aber das ist nicht elegant für lange Aufzählung Werte wie "Benachrichtigung" und ich bekomme immer noch nicht meine Aufzählung. Die Aufzählung ist sehr wichtig für mich. :) –

15

Wenn Sie sowohl die Groß- und Kleinschreibung Validierung halten zu wollen, während sie noch Intellisense in Visual Studio 2010 bekommen Sie eine Vereinigung verwenden können:

<xs:simpleType name="setDigitalPointType"> 
    <xs:union> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:enumeration value="on" /> 
       <xs:enumeration value="off" /> 
      </xs:restriction> 
     </xs:simpleType> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:pattern value="[Oo][Nn]" /> 
       <xs:pattern value="[Oo][Ff][Ff]" /> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:union> 
</xs:simpleType> 

Dies funktioniert, weil es die Tatsache, dass Visual Studio 2010 nur ausnutzt verarbeitet den ersten einfachen Typ in einer Union, wenn er seine Intellisense-Daten erstellt. Wenn ein Dokument jedoch validiert wird, verarbeitet es beide, was bedeutet, dass "Ein" immer noch gültig ist, obwohl es nicht in der Liste der Aufzählungswerte enthalten ist.