Ich bin mit einer Datentransformation Issuse und würde wirklich Ihre Hilfe und Beratung zu schätzen wissen.Conditional XML zu XML-Transformation
Ich möchte eine ziemlich große XML-Datei in ein anderes XML-Format umwandeln. Meine Kollegen sagen mir, dass die Verwendung von XSLT mein Problem lösen würde, aber auf den ersten Blick finde ich, dass XSLT nicht in der Lage ist, die bedingte Formatierung durchzuführen, die ich brauche. Wie Sie in meinem XML unter sehen können, muss ich eine Anzahl von Zeitreihen-Punkten von einem bestimmten Zeitintervall ableiten, das in den Start- und Endzeit-Tags beschrieben wird.
Meine Frage ist also, was ist die beste Praxis für ein solches Problem? Ist das mit XSLT oder einer anderen Technologie einfach lösbar? Oder wird am besten mit benutzerdefiniertem Code umgegangen?
Wir freuen uns auf Ihre Antworten.
Mit freundlichen Grüßen!
XML transformiert werden:
<starttime>
<datetime>201605130500</datetime>
<qualifier>163</Qualifier>
</starttime>
<endtime>
<datetime>201605150500</datetime>
<qualifier>164</Qualifier>
</endtime>
<seriesPeriod>
<quantityDetails>
<quantity>8.0</quantity>
<qualifier>135</qualifier>
</quantityDetails>
<datetimeDetails>
<datetime>201605130500201605130600</datetime> <!-- This is a period to from 05:00 to 06:00 (from-to YYYYMMDDHHH-YYYYMMDDHHH) -->
<qualifier>324</qualifier>
</datetimeDetails>
</seriesPeriod>
<seriesPeriod>
<quantityDetails>
<quantity>-11</quantity>
<qualifier>135</qualifier>
</quantityDetails>
<datetimeDetails>
<dateTime>201605130600201605130700</dateTime>
<qualifier>324</qualifier>
</datetimeDetails>
</seriesPeriod>
<!-- Continues with a total of 48 similar "seriesPeriod", one point for each hour in the timeinterval derived from starttime and endtime -->
Erwartetes Ergebnis nach der Transformation:
<timeseries>
<timeinterval>
<start>2016-05-13T05:00Z</start>
<end>2016-05-15T05:00Z</end>
</timeinterval>
<point>
<position>1</position>
<quantity>8</quantity>
</point>
<point>
<position>2</position>
<quantity>-11</quantity>
</point>
<!-- Continues with a total of 48 similar "points", one point for each hour in the timeinterval -->
</timeseries>
XSLT könnte hier ein gutes Werkzeug für die Aufgabe sein, aber Sie müssen die Logik Ihrer erforderlichen Transformation erklären. Insbesondere, woher kommen die "Quantity" -Werte in Ihrem erwarteten Ergebnis? Danke –
Eine Erklärung der Logik - zusammen mit einem umfassenderen (und wohlgeformten!) Beispiel - wäre nützlich. Geben Sie auch an, ob Sie XSLT 2.0 verwenden können. –
Bitte klären Sie, wie die Menge von "4" auf dem ersten Punkt und "-11" auf dem zweiten Punkt berechnet wird. –