Mam starszą wersję systemu, który produkuje XML ze znacznikami czasowymi podobnymi do ISO 8601, ale z przestrzenią używaną do oddzielania daty i czasu. Na przykład. 2009-12-31 00:00:00. Chciałbym zdefiniować schemat, który definiuje możliwy zakres dla tych znaczników czasowych. xsd:dateTime
byłby dobrze przystosowany do tego celu, jednak używa T jako separatora między datą i czasem. Nie mogę zmodyfikować starego systemu, aby zwracać znaczniki czasu, używając T jako separatora.Modyfikuj xsd: datTime prosty typ, aby używać innego separatora daty i czasu.
Czy istnieje sposób, aby zdefiniować simpleType
definicję, która pochodzi od xsd:dateTime
, ale zmienia separator lub czy muszę polegać na łańcuchu z odpowiednim wzorem i czytelnymi komentarzami?
Aktualizacja: Jak rozumiem, mogę użyć wzoru na dateTime ograniczyć zakres obiektów datetime na wejściu, ale to nie zmienia znak separatora.
przykład:
<xs:restriction base="xs:dateTime">
<xs:pattern value="[2].*:[0-9]{2}"/>
</xs:restriction>
To pozwala jedynie na dateTime latami, poczynając od 2000 bez sekund frakcyjnych i strefa czasowa.
Streszczenie odpowiedzi:
Nie jest możliwe użycie xs:dateTime
jako typ bazowy dla tego produktu. Możliwe jest jednak użycie xs:string
i zdefiniowanie wzoru.
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-6][0-9]"/>
</xs:restriction>
Korzystając ciąg, oczywiście, żadnych automatycznych narzędzi, które używają schematu do tworzenia powiązań językowych będzie również pobrać ciąg, konwersja do odpowiedniego typu językowego dla data/czas musi być zrobione ręcznie.
Tak wiem. Ale liczyłem na coś, co wywodzi się z dateTime, dzięki czemu mogę używać XMLBean jako zautomatyzowanego programu mapującego Schema-to-Java. –
Nigdy wcześniej nie próbowałem używać elementu 'pattern' z czymkolwiek innym niż ciąg znaków, ale może faktycznie działałoby z' dateTime'. Z pewnością warto spróbować. – devuxer
Nie mogę wymyślić lepszej odpowiedzi niż to. Z pewnością XSD związany z piekłem ograniczeń .. Nie możesz używać XSD na swój własny sposób .. –