XPath verbetert XML-rapporten

In onze vorige post, "Het maken van elegante rapporten voor GPS-XML-gegevens", gebruikten we een XPath-expressie om knooppunten uit een XML-document te selecteren voor een grafiek van hoogtelijnen. U kunt XPath ook gebruiken om waarden te berekenen. Altova StyleVision biedt uitgebreide ondersteuning voor XPath, en we kunnen XPath-expressies gebruiken om interessante informatie toe te voegen aan onze GPS-XML-rapporten. Zo kunnen we bijvoorbeeld de hoogtedata die door het GPS-apparaat in meters worden opgeslagen, verwerken om een grafiek te maken die de hoogte in voet boven zeeniveau weergeeft.

De formule om meters om te zetten naar feet is: (meters x 3,2808399) = feet. We kunnen deze berekening toepassen in het dialoogvenster "Grafiekconfiguratie":

Nu zal de grafiek worden getekend aan de hand van de resultaten van de berekening die is uitgevoerd op basis van gegevens die zijn opgehaald uit het bronbestand.

XPath-functies voor tijd

U zult wellicht hebben opgemerkt dat onze grafiek geen uitleg bevat over de schaal van de X-as. We hebben bewust de markeringen en waarden op de X-as weggelaten, omdat GPS-apparaten trackinformatie opslaan om de paar seconden. Het bestand voor de ijsklimtocht bevat meer dan 1.800 hoogtedata en de enorme hoeveelheid data zorgde voor een reeks markeringen die samenvloeiden in een doorlopende lijn! Er was ook niet genoeg ruimte voor de tekst met de waarden.

Maar zou het niet interessant zijn om te weten hoe lang de wandeling duurde? We kunnen die informatie in ons rapport opnemen door gebruik te maken van de automatische berekeningsfunctie van StyleVision. Het onderstaande fragment van het ontwerp toont drie elementen met automatische berekening die aan het rapport zijn toegevoegd via het menu "Invoegen / Automatische berekening / Waarde" en die zijn aangevuld met beschrijvende tekst.

Door met de rechtermuisknop op een element voor automatische berekening te klikken, opent er een menu. Dit menu biedt toegang tot het dialoogvenster "XPath bewerken", dat hieronder in een kleinere weergave wordt weergegeven. U kunt een XPath-expressie direct in het venster typen, of er een samenstellen door elementen, operatoren en functies te selecteren uit de bijbehorende lijsten.

Om de benodigde tijd voor de reis te berekenen, kunnen we de XPath-functies time en min(anyAtomicType) gebruiken, in combinatie met XPath-expressies voor de time Voor elk meetpunt bepalen we de vroegste en de laatste tijdstippen die in de meting zijn geregistreerd. We kunnen het vroegste tijdstip aftrekken van het laatste tijdstip om de totale meetduur te berekenen.

Een andere optie in het contextmenu van "Automatische berekening" opent het dialoogvenster "Waarde opmaken", waardoor u direct toegang heeft tot verschillende opmaakopties die geschikt zijn voor het type gegevens van het berekeningsresultaat.

We kunnen ook de functies min() en max() gebruiken om de vertrek- en aankomsttijden te selecteren, maar de door het GPS-apparaat opgeslagen gegevens zijn in GMT-tijd, terwijl deze wandeling plaatsvond in de Eastern Standard Time-zone in de Verenigde Staten, waar de lokale tijd vijf uur eerder is.

Gelukkig bevat XPath een speciale functie, adjust-dateTime-to-timezone(), waarmee een datum- en tijdwaarde kan worden aangepast aan een andere tijdzone. Hier is de expressie die we hebben gebruikt om de vertrektijd aan te passen:

pasDatumTijdAanTijdszone(minimum($XML/n1:gpx/n1:trk/n1:trkseg/n1:trkpt/n1:time), xs:dayTimeDuration('-PT5H'))

Let op dat we de aanpassingsduur als een tekststring moeten invoeren en expliciet moeten aangeven dat het om een tijdduur gaat (data type: dayTimeDuration).

We kunnen het dialoogvenster "Waarde opmaken" gebruiken om de vertrek- en aankomsttijden op een herkenbare manier weer te geven:

We hebben nog een verbetering voor XPath toegevoegd aan ons GPS XML-rapport. In onze vorige post beschreven we een techniek om een StyleVision-project en gestandaardiseerde bestandsnamen te gebruiken om rapporten te genereren voor meerdere data bestanden, zonder de SPS-file te wijzigen. U kunt ook de StyleVisionBatch-tool gebruiken, of zelfs de StyleVision API, om het verwerkingsproces te automatiseren via SPS-stijlsheets en zo rapporten in verschillende formaten te creëren.

Bestandsnamen van grafieken

Wanneer we HTML-output genereren en opslaan, is het hoofdrapport een HTML-document en zijn de grafieken afzonderlijke afbeeldingen. We kunnen de bestandsnaam van de grafiek specificeren in het dialoogvenster "Grafiekinstellingen", maar als we meerdere HTML-rapporten in dezelfde map op een server willen opslaan, hebben we verschillende bestandsnamen nodig voor elke grafiek. Anders zal elke nieuwe grafiek de standaardnaam gebruiken, waardoor de vorige versie overschreven wordt.

De optie "Aangepaste bestandsnaam" stelt ons in staat om een XPath-expressie te gebruiken om een andere bestandsnaam voor de afbeelding op te geven. Een eenvoudige oplossing zou kunnen zijn om een willekeurig getal te genereren, dit om te zetten in een string en deze string in de bestandsnaam te plaatsen.

Maar dat kunnen we niet, omdat XPath geen functie heeft om willekeurige getallen te genereren.

In plaats daarvan kunnen we een pseudo-willekeurige string genereren door twee extra XPath-tijdfuncties te combineren. De functie seconds-from-time() retourneert seconden en milliseconden van een willekeurige waarde, en de functie current-time() retourneert de huidige systeemtijd in uren, minuten, seconden en milliseconden.

We kunnen een tijdsstempel (aantal seconden sinds een bepaald tijdstip, berekend op basis van de huidige tijd) in een XPath-expressie invoegen in het dialoogvenster voor de instellingen van het afbeeldingsbestand. Hierdoor kan een bestandsnaam worden gegenereerd op basis van het exacte seconde- en milliseconde-moment waarop het HTML-resultaat wordt gegenereerd. De volledige XPath-expressie om de bestandsnaam te genereren, ziet er als volgt uit:

Wanneer we de gegenereerde HTML-output opslaan, geeft StyleVision een overzicht van alle aanvullende bestanden die samen met het hoofddocument zijn aangemaakt

Bestandsnamen van de routekaartafbeeldingen

Wanneer we meerdere HTML-pagina's maken voor reisverslagen, moeten we ook voor elke reis een ander beeld van de routekaart gebruiken. XPath kan ook bij deze taak helpen. In eerste instantie hebben we de kaart toegevoegd met behulp van een specifieke bestandsnaam-URL, maar in plaats daarvan kunnen we een bestandsnaam voor het beeld definiëren als een parameter die wordt meegegeven wanneer het stylesheet wordt verwerkt.

Het menu-item "Bewerken / Stijlvelparameters" opent het dialoogvenster "Parameters bewerken", dat een centrale toegang biedt tot alle parameters van het stijlvel. Op de onderstaande screenshot is een parameter toegevoegd met de naam "routeMapFile" en is de standaardwaarde ervan gedefinieerd.

Nu kunnen we de parameter gebruiken om het bestand met de routekaart toe te wijzen. Het dialoogvenster "Afbeelding bewerken" bevat vier opties om de locatie van een afbeelding te definiëren. In de onderstaande screenshot hebben we de tabbladen "Statisch" en "Dynamisch" gekozen om een specifieke maplocatie en een dynamische bestandsnaam te gebruiken.

We kunnen een nieuwe waarde toevoegen aan de parameter routeMapFile wanneer we een rapport genereren in elk uitvoerformaat. Als we geen nieuwe waarde opgeven, wordt de standaardwaarde gebruikt die is gedefinieerd in het dialoogvenster "Parameters bewerken".

Nu kunnen we een commando invoeren om StyleVision in batchmodus te starten, met een ander routekaartafbeelding:

We kunnen ook een parameter gebruiken om de achtergrondkleur van het diagram in te stellen. Een andere optie via de opdrachtregel kan zelfs een nieuw invoer-XML-bestand selecteren om het actieve XML-bestand te vervangen, zoals gedefinieerd in het stylesheet. Parameters en opties via de opdrachtregel maken van StyleVisionBatch een uitstekende manier om hetzelfde stylesheet te gebruiken om rapporten te genereren voor verschillende datasets.

Hieronder ziet u een voorbeeld van de HTML-weergave van de gegevens over de ijsklimtocht, waarbij alle toegepaste XPath-verbeteringen zijn toegepast:

Om uw eigen rapporten te ontwerpen op basis van GPS-XML-bestanden, of om op een overzichtelijke manier aan andere XML-rapportage-, e-formulier- of multi-kanaalpublicatiebehoeften te voldoen, klik hier voor een gratis proefversie van Altova StyleVision.