in questa discussione faccio riferimento alla mia ultima discussione Convert XML to CSV using XSLT - dynamic columns.XSLT per generare un altro script XSLT
Lo script XSLT nel thread indicato funziona bene ma con un documento xml di grandi dimensioni le prestazioni non sono buone. Ora voglio scrivere uno script XSLT che emetta un altro script XSLT che emetterà il file CSV finale.
La mia domanda ora è, come scrivere il primo script XSLT. L'output dovrebbe essere simile al seguente:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/*">
<xsl:text>Name;</xsl:text>
<xsl:text>Brother;</xsl:text>
<xsl:text>Sister</xsl:text>
<-- this part is dynamic -->
<xsl:apply-templates select="Person" />
</xsl:template>
<xsl:template match="Person">
<xsl:value-of select="Name" />
<xsl:value-of select="Brother" />
<xsl:value-of select="Sister" />
<-- this part is dynamic too -->
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
Il file di input XML è la stessa come nel thread refered:
<Person>
<Name>John</Name>
<FamilyMembers>
<FamilyMember>
<Name>Lisa</Name>
<Type>Sister</Type>
</FamilyMember>
<FamilyMember>
<Name>Tom</Name>
<Type>Brother</Type>
</FamilyMember>
</FamilyMembers>
</Person>
<Person>
<Name>Daniel</Name>
<FamilyMembers>
<FamilyMember>
<Name>Peter</Name>
<Type>Father</Type>
</FamilyMember>
</FamilyMembers>
</Person>
Quindi per ogni diverso tipo di elemento dovrebbe esserci una riga come:
<xsl:text>Type;</xsl:text>
nello script XSLT risultante.
Forse alcuni di voi hanno un buon consiglio per me. Grazie in anticipo!
André
In realtà non occorre una soluzione a due esterni fasi. Tutto quello che devi fare è migliorare l'efficienza su larga scala della soluzione di Tim. La vera domanda che dovresti porci è come ottimizzare su larga scala. –