Exemple transformation de données (exportation)
Si vous voulez par exemple exporter des objets et que le XML exporté n'est pas formaté comme désiré, vous pouvez transformer le XML.
Exemple exportation standard d'objets :
<?xml version='1.0' encoding='utf-8'?>
<document>
<header>
<creation-date>2014-03-20T14:37:33</creation-date>
<user>ADMINISTRATORUK</user>
<EE-version state="Production">201311.0.4.0P
</EE-version>
<metadataversion>B_FOEE_2013110000_FB11280
</metadataversion>
<database>MSSQL</database>
<measurementunit>METER</measurementunit>
<ExportDefinitionCode>EXP_PROP</ExportDefinitionCode>
<ExportDocumentCode>exp-prop</ExportDocumentCode>
<SequenceOfDocument>1</SequenceOfDocument>
</header>
<businessobjects>
<Property>
<Address>Columbus Lane</Address>
<City>London</City>
<Country>United Kingdom</Country>
<Name>Columbus Campus</Name>
<IsArchived>False</IsArchived>
</Property>
<Property>
<Address>Columbus Square</Address>
<City>London</City>
<Country>United Kingdom</Country>
<Name>Columbus Square</Name>
<IsArchived>False</IsArchived>
</Property>
<Property>
<Address>Columbus Lane</Address>
<City>London</City>
<Country>United Kingdom</Country>
<Name>Columbus building</Name>
<IsArchived>False</IsArchived>
</Property>
</businessobjects>
</document>
Dans le XML final l'en-tête doit être enlevé aussi bien que le champ Pays et le champ IsArchived doit comprendre un code différent. Comme ceci :
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xs="http://www.w3.org/2001/XMLSchema">
<businessobjects>
<property>
<Name>Columbus Campus</Name>
<Address>Columbus Lane</Address>
<City>London</City>
<IsArchived>0</IsArchived>
</property>
<property>
<Name>Columbus Square</Name>
<Address>Columbus Square</Address>
<City>London</City>
<IsArchived>0</IsArchived>
</property>
<property>
<Name>Columbus building</Name>
<Address>Columbus Lane</Address
><City>London</City>
<IsArchived>0</IsArchived>
</property>
</businessobjects>
</document>
Le fichier XSL suivant est utilisé pour exécuter la transformation :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
<xsl:template match="/">
<document>
<businessobjects>
<xsl:for-each select="document/
businessobjects/Property">
<property>
<Name>
<xsl:value-of select="Name"/>
</Name>
<Address>
<xsl:value-of select="Address"/>
</Address> <City>
<xsl:value-of select="City"/>
</City>
<xsl:if test="IsArchived='False'">
<IsArchived>0</IsArchived>
</xsl:if>
</property>
</xsl:for-each>
</businessobjects>
</document>
</xsl:template>
</xsl:stylesheet>
Procédure
1. Créez une définition d'exportation.
2. Créez un document pour la définition d'exportation. Référez dans la boîte Source de données au fichier XML à exporter.
3. Créez une définition de business object pour le business object Objets. (Voir également l'exemple 'Exporter des données de plusieurs business objects').
4. Créez un autre document d'exportation. Référez dans la boîte Source de données au fichier XML transformé.
5. Cliquez à l’étape Travailleur d'importation/exportation dans le menu d'actions sur Ajouter pour un fichier XSLT comme nouveau travailleur. Ajoutez les paramètres comme spécifié dans la spécification de travailleur dans le section Utiliser des travailleurs standard.
6. Enlevez à la même étape le PlanonReaderWorker et XMLWriter worker.
7. Exécutez la définition.