Hallo,
habe eine große Bitte:
wird dieses Stylesheet
auf dieses XML (Auszug) angewendet
erhalte ich folgende Ausgabe:
Schön wäre eine Lösung, die diese Ausgabe erzeugt:
Meine Versuche beispielsweise die Werte der b-Attribute zu verketten sehen so aus:
Die gewünschte Ausgabe bekomme ich aber einfach nicht hin. Wie geht man so etwas an? Kann mir bitte jemand helfen?
Die Transformation erfolgt mit MSXML und VB(A) in Anlehnung an
http:////www.sbslimited.co.uk/xmltocsv.html
Danke und Gruß
MaxW
habe eine große Bitte:
wird dieses Stylesheet
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template name="delim"> <xsl:text>;</xsl:text> </xsl:template> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="H/L"> <xsl:for-each select="@*[position() > 0]"> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:call-template name="delim"/> </xsl:if> </xsl:for-each> <!-- neue Zeile ' ' --> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="M/L"> <xsl:choose> <xsl:when test="@b" > <xsl:for-each select="@*"> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:call-template name="delim"/> </xsl:if> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:for-each select="@*"> <xsl:choose> <xsl:when test="position() != 2"> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:call-template name="delim"/> </xsl:if> </xsl:when> <xsl:otherwise> <xsl:call-template name="delim"/> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:call-template name="delim"/> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:otherwise> </xsl:choose> <!-- neue Zeile ' ' --> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>
Code:
<?xml version="1.0" encoding="iso-8859-1"?> <C> <H> <L a="10" b="Dummy1"/> </H> <M> <L a="61" b="1Dummy2-"/> <L a="62" b="2Dummy2" c="S001" d="F"/> <L a="62" c="S002" d="F"/> </M> <H> <L a="51" b="1Dummy3"/> <L a="52" b="2Dummy3"/> </H> <M> <L a="62" b="Dummy4" c="S003" d="G"/> <L a="62" c="S004" d="H"/> <L a="62" c="S005" d="I"/> </M> <M> <L a="62" b="Dummy5" c="S007" d="X"/> <L a="62" c="S007" d="Y"/> <L a="62" c="S007" d="Z"/> </M> </C>
Code:
10;Dummy1 61;1Dummy2- 62;2Dummy2;S001;F 62;;S002;F 51;1Dummy3 52;2Dummy3 62;Dummy4;S003;G 62;;S004;H 62;;S005;I 62;Dummy5;S007;X 62;;S007;Y 62;;S007;Z
Code:
10;Dummy1 62;1Dummy22Dummy2;S001;F 62;1Dummy22Dummy2;S002;F 52;1Dummy3*2Dummy3 62;Dummy4;S003;G 62;Dummy4;S004;H 62;Dummy4;S005;I 62;Dummy5;S007;X 62;Dummy5;S007;Y 62;Dummy5;S007;Z
Code:
<xsl:template match="H"> <xsl:variable name="L-zusammen"> <xsl:for-each select="L/@b"> <xsl:value-of select="."/> <xsl:if test="position() !=last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:copy-of select="$L-zusammen"/> </xsl:template>
Die Transformation erfolgt mit MSXML und VB(A) in Anlehnung an
http:////www.sbslimited.co.uk/xmltocsv.html
Danke und Gruß
MaxW
Comment