Hallo rodgerwilco,
wenn du das mit xs:double in ein Schema bringen willst, müsste dein XML so aussehen:
<transformation>
<value>12.34</value>
<value>45.87</value>
<value>10</value>
<value>0.5</value>
<value>0</value>
<value>38</value>
</transformation>
dann kannst Du deinen transformationType auf die Values anwenden.
Wenn Du alle 6 in ein Element bringen willst, kannst Du dafür eine passende Regex als Pattern definieren. Der transformationType sollte dann aber auf xs:string basieren, nicht auf xs:double, und du musst nachher Code haben, der diese Transformationsangabe versteht.
Das Pattern sollte wohl mit \s* beginnen und enden, um führende und abschließende Leerstellen zu erlauben.
Dann müsste es eine Double-Zahl matchen können, das wäre sowas wie (\d+(\.\d*)?|\.\d+)([eE][+-]?\d{1,2})?
. Das ist eine Mantisse, die entweder gar keinen Dezimalpunkt hat, oder mind. eine Stelle davor, oder nur Nachkommastellen hat. Danach folgt ein Exponent bestehend aus e oder E, dann optional ein + oder -, und 1-2 Ziffern. Wenn das nicht passt, musst Du es modifizieren.
Dein Tranformstring besteht dann aus 6 dieser Doubles, durch Space getrennt, das lässt sich mit dem {} Quantifizierer halbwegs abkürzen zu \s*(DDD\s+){5}DDD\s*
(für DDD muss das double-Muster von oben eingesetzt werden).
Aus der Hüfte geschossen würde ich also dies hier schreiben::
<xs:simpleType name="transformationType">
<xs:restriction base="xs:string">
<xs:pattern value="\s*((\d+(\.\d*)?|\.\d+)([eE][+-]?\d{1,2})?\s+){5}(\d+(\.\d*)|\.\d+)([eE][+-]?\d{1,2})?\s**"/>
</xs:restriction>
</xs:simpleType>
Hoffe es funktioniert :) Die Regex habe ich mit RegexStorm getestet, das ist nicht 1:1 Schema-Regex.
Rolf