[XSD] dateTime restrictie pattern

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • JvdS
  • Registratie: December 2003
  • Laatst online: 17-05 19:58
Bij het valideren van een XML stream aan de hand van een XML schema (XSD) lukt het me niet om een afwijkende dateTime patroon te valideren.
Standaard ziet een dateTime instantie er volgens w3.org zo uit:
CCYY-MM-DDThh:mm:ss (CC voor Century, YY voor Year, etc)

Nu wil ik de volgende dateTime instantie valideren:
DD/MM/CCYYThh:mm:ss

Ik heb geprobeerd een restrictie te maken met een patroon, maar ik kom niet verder... Telkens komt de parser met de vaudt dat het een ongeldige dateTime constructie is.

  • JvdS
  • Registratie: December 2003
  • Laatst online: 17-05 19:58
Heb ik dit misschien in het verkeerde forum geplaatst omdat het om XSD/XML gaat?

  • creative8500
  • Registratie: September 2001
  • Laatst online: 03-01 16:54

creative8500

freedom.

Je zit hier goed, hoor. Welke parser gebruik je? Laat eens wat meer zien.

  • JvdS
  • Registratie: December 2003
  • Laatst online: 17-05 19:58
C:
1
2
3
reader.ValidationType = ValidationType.Schema;
XmlSchemaCollection xsc = reader.Schemas;
xsc.Add("", new XmlTextReader("Schema.xsd"));


XSD:
XML:
1
2
3
4
5
<xs:simpleType name="datum">
<xs:restriction base="xs:dateTime">
<xs:pattern value="[0-9]{1,2}\/[0,9]{1,2}\/yyyy\shh\:mm\:ss" />
</xs:restriction>
</xs:simpleType>

  • JvdS
  • Registratie: December 2003
  • Laatst online: 17-05 19:58
Heb het intussen maar op een andere manier opgelost, maar ik ben benieuwd of hier toch iemand een oplossing voor weet.
Anders lijkt het me heel raar, dat xml schema dit nog niet ondersteunt...

  • WAcKiN
  • Registratie: November 1999
  • Laatst online: 28-08-2023
Nou weet ik zelf weinig van xmlschema als xml validation vehikel zelf, maar wel wat van de basis xmlschema datatypes (i.v.m. RDF), maar zover ik weet kan datgene wat je wil niet. Je zegt dat je 'datum' type een xsd:dateTime is (<xs:restriction base="xs:dateTime">) maar de values die je in je geeft ('01/04/2004T12:34:56') zijn dat niet. Tevens lijkt me je patroon incorrect tenzei 'yyyy' e.d. onderdeel uitmaken van de regexp regels van xmlschema.

Je kan twee dingen doen lijkt me; of je date-time waarden in je xml in w3c/xmls notatie ipv die 'eigen' notatie zetten, of de <xs:restriction base="xs:dateTime"> restrictie weglaten zodat je je eigen 'datum' regels (zoals een correct patroon) kan vastleggen. Dit kan er voor zorgen dat bepaalde tools/apis niet meer weten dat het om een date-time gaat, wat misschien de reden is waarom je het toch probeerde het zo te doen?

  • JvdS
  • Registratie: December 2003
  • Laatst online: 17-05 19:58
Ja, precies. Eerste optie gaat niet lukken, omdat de data van een 3e partij komt.
Maar ik los het nu op door na de xml validatie de string in naar een dateTime object om te zetten en als dat niet lukt, het af te vangen (soort van validatie).
Maar ik vind het erg raar, dat XML schema zoiets simpels als dit niet goed ondersteunt. Lijkt me namelijk veelgebruikt!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:52

Freee!!

Trotse papa van Toon en Len!

JvdS schreef op donderdag 09 december 2004 @ 22:38:
<knip>
Maar ik vind het erg raar, dat XML schema zoiets simpels als dit niet goed ondersteunt. Lijkt me namelijk veelgebruikt!
We hebben het hier over een complete date-time-stamp, daarin is de volgorde behoorlijk van belang, vooral voor sorteren. Waarschijnlijk kan wat jij wil wel, als je alleen het datumgedeelte gebruikt, maar dan zal je nog het datum-formaat op moeten geven.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT

Pagina: 1