Hallo,
die Daten im CAMT XML werden mit einem normalen XML-Parser (aus .NET) eingelesen.
Das Element ValueDate ist laut
Spezifikation vom Typ "DateAndDateTimeChoice", welcher in der Spezifikation interessanterweise nicht näher erklärt wird. Wäre ja zu einfach wenn es eine klare und eindeutige Spezifikation gäbe. Besser immer viele Details einfach offen lassen und Formulierungen verwenden die unterschiedlich interpretiert werden können. Auf der ebics.de Homepage kann man nun wenigstens ein XML-Schema für die CAMT-Formate laden. Darin ist der Typ "DateAndDateTimeChoice" wir folgt definiert:
Code
<xs:complexType name="DateAndDateTimeChoice">
<xs:sequence>
<xs:choice>
<xs:element name="Dt" type="ISODate"/>
<xs:element name="DtTm" type="ISODateTime"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
Der Typ ISODate (oder ISODateTime) ist in der Spezifikation wiederrum definiert als
ISODate - - xs:date gemäß http://www.w3.org/TR/xmlschema-2/#date
Und somit auf ein standard Datum nach XML-Schema zurückgeführt. Ein "xs:date" kennt aber nur ein echtes Datum und keinen 30. Februar oder ein Datum wie 2016-34-65. Deshalb steigt jeder XML-Parser beim Versuch ein XML-Datum "2016-02-30" zu parsen aus.
Würden die Banken korrekete XML-Daten mit korrektem Datum liefern, dann wäre ja alles gut.
PS: Wäre bei der CAMT Spezifikation die Intention gewesen, auch so etwas schwachsinniges wie den 30. Februar abzubilden, dann hätte man für das entsprechende Datenelement halt einfach nicht den Typ xs:date, sondern einfach einen Text-Typ mit freiem Textinhalt nehmen sollen. Dann wäre es wenigstens korrektes XML das jeder normale XML-Parser auch laden kann.