ISO 8601'e benzer zaman damgası içeren XML üreten, ancak alanı tarih ve saati ayırmak için kullanılan eski bir sistemim var. Örneğin. 2009-12-31 00:00:00. Bu zaman damgaları için olası aralığı tanımlayan bir şema tanımlamak istiyorum. xsd:dateTime
bu amaçla çok uygun olacaktır, ancak tarih ve saat arasındaki ayırıcı olarak T kullanır. Ayırıcıyı T'yi ayırıcı olarak kullanarak geri döndürmek için eski sistemi değiştiremiyorum.Farklı tarih ve saat ayırıcı kullanmak için xsd: dateTime basit türünü değiştir
xsd:dateTime
'dan türeyen simpleType
tanımına sahip olmanın bir yolu var mı, ancak ayırıcıyı mı değiştiriyor yoksa uygun bir kalıp ve okunabilir yorumlar içeren bir dizeye güvenmem gerekiyor mu?
Güncelleştirme: Anladığım kadarıyla, dateTime öğelerinin giriş için aralığını kısıtlamak üzere bir desen kullanabilir, ancak bu, ayırıcı karakterini değiştirmez.
Örnek:
<xs:restriction base="xs:dateTime">
<xs:pattern value="[2].*:[0-9]{2}"/>
</xs:restriction>
Bu yalnızca 2000 ile başlayan yıllar ve fraksiyonel saniye ve saat dilimi bilgileri olmadan DateTime için izin verecek. cevaplar ait
Özet:
temel türü olarak xs:dateTime
kullanmak mümkün değildir. Ancak xs:string
'u kullanmak ve bir desen tanımlamak mümkündür.
<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>
elbette bir dize kullanarak, dil bağlamaları oluşturmak için şema kullanan herhangi bir otomatik araçları da bir dize alır, tarih/zaman için uygun dil türüne dönüşüm elle yapılmalıdır.