Tengo un sistema heredado que produce XML con marcas de tiempo similares a la norma ISO 8601, pero con el espacio utilizado hasta la fecha y la hora por separado. P.ej. 2009-12-31 00:00:00 . Me gustaría definir un esquema que defina el rango posible para estas marcas de tiempo. xsd:dateTime
sean particularmente idóneos para tal fin, sin embargo, se utiliza T como separador entre la fecha y la hora. No puedo modificar el sistema heredado para devolver marcas de tiempo usando T como separador.Modificar xsd: dateTime tipo simple de usar separador diferente fecha y tiempo
¿Hay alguna manera de tener una definición simpleType
que se deriva de xsd:dateTime
, pero altera el separador o tengo que confiar en una cadena con un patrón apropiado y comentarios legibles por humanos?
Actualización: Según tengo entendido, puedo usar un patrón para dateTime para restringir el rango de objetos dateTime para la entrada, pero esto no altera el carácter separador.
Ejemplo:
<xs:restriction base="xs:dateTime">
<xs:pattern value="[2].*:[0-9]{2}"/>
</xs:restriction>
Esto sólo permitiría dateTime con año empezando con 2000 y sin fracciones de segundo y la información de zona horaria.
Resumen de las respuestas:
No es posible utilizar xs:dateTime
como el tipo de base para esto. Sin embargo, es posible usar xs:string
y definir un patrón.
<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>
Mediante el uso de una cadena, por supuesto, cualquier herramientas automáticas que utilizan el esquema para crear enlaces de lenguaje también habrá recuperar una cadena, la conversión al tipo de lenguaje apropiado para la fecha/hora tiene que ser hecho a mano.
Sí, lo sé. Pero esperaba algo que derive de dateTime, de modo que pueda usar XMLBeans como un mapeador automatizado de Schema a Java. –
Nunca he intentado usar un elemento 'pattern' con otra cosa que no sea una cadena, pero quizás funcione con' dateTime'. Sin duda vale la pena intentarlo. – devuxer
No puedo pensar una mejor respuesta que esta ... Ciertamente, XSD está sujeto a infinidad de restricciones .. No puedes usar XSD a tu manera ... –