w tym wątku odsyłam do mojego ostatniego wątku Convert XML to CSV using XSLT - dynamic columns.XSLT do generowania kolejnego skryptu XSLT
Skrypt XSLT w odnośnym wątku działa dobrze, ale z dużym dokumentem XML wydajność nie jest dobra. Teraz chcę napisać skrypt XSLT, który wyprowadza inny skrypt XSLT, który wyświetli końcowy plik CSV.
Moje pytanie brzmi: jak napisać pierwszy skrypt XSLT. Wyjście powinno wyglądać następująco:
<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>
Plik XML wejście jest taka sama jak w skieruję wątku:
<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>
Tak dla każdego innego elementu typu powinien istnieć jeden wiersz jak:
<xsl:text>Type;</xsl:text>
w wynikowym skrypcie XSLT.
Może niektórzy z was mają dla mnie dobrą radę. Dziękuję w zaawansowanej!
André
Właściwie nie potrzeba rozwiązania dwu-external-faz. Wszystko, co musisz zrobić, to poprawić wydajność w skali rozwiązania Tima. Prawdziwym pytaniem, które powinieneś zadać, jest optymalizacja na dużą skalę. –