Toon posts:

[XML/XSL] Google Adwords report (XML-formaat) opmaken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweakers,
Als je van Google Adwords gebruik maakt dan kan je een rapport genereren van de resultaten. Dit kan onder andere in xml-formaat. Je krijgt dan bijvoorbeeld report.xml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="report.xsl"?>

<report>
<table>
<columns>
    <column name="campaign"></column>
    <column name="keyword"></column>
    <column name="headline"></column>
    <column name="imps"></column>
    <column name="clicks"></column>
    <column name="ctr"></column>
    <column name="pos"></column>
</columns>
<rows>
    <row campaign="xx1" keyword="yy1" headline="zz1" imps="6" clicks="0" ctr="0.0" pos="1.3"></row>
    <row campaign="xx1" keyword="yy2" headline="zz2" imps="16" clicks="0" ctr="0.0" pos="4.0"></row>
    <row campaign="xx1" keyword="yy3" headline="zz3" imps="58293" clicks="4" ctr="6.8E-5" pos="3.3"></row>
</rows>
</table>
<totals>
<grandtotal imps="77056" clicks="65" ctr="8.4E-4" pos="3.1865526370431896"></grandtotal>
</totals>
</report>

Met behulp van een xsl-bestand wil ik graag deze gegevens opmaken. Het lukt me echter niet om de gegevens weer te geven. Hieronder mijn report.xsl.
Het is de bedoeling dat uiteindelijk alle tekst uit het xml-bestand komt maar om even zeker te weten dat er iets komt te staan heb ik een mix gemaakt van "vaste gegevens" en gegevens die uit het xml bestand gehaald worden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform/1.0">
    <xsl:template match="/">
    <html>
    <head>
        <title>Google Adwords Report</title>
    </head>
    <body bgcolor="#CCCCCC">
        Google Adwords Report<br />
            <TABLE border="1" width="100%">
                <TR>    <TD>campaign</TD>
                    <TD>keyword</TD>
                    <TD>headline</TD>
                    <TD>imps</TD>
                    <TD>clicks</TD>
                    <TD>ctr</TD>
                    <TD>pos</TD></TR>
            <xsl:for-each select="report/table/rows/row">
            <xsl:sort select="@keyword" />
                <TR>
                <TD><font color="red">1</font><xsl:value-of select="report/table/rows/row/@campaign" /></TD>
                <TD><font color="red">2</font><xsl:value-of select="@keyword"/></TD>
                <TD><font color="red">3</font><xsl:value-of select="@headlines"/></TD>
                <TD><font color="red">4</font><xsl:value-of select="@imps"/></TD>
                <TD><font color="red">5</font><xsl:value-of select="@clicks"/></TD>
                <TD><font color="red">6</font><xsl:value-of select="@ctr"/></TD>
                <TD><font color="red">7</font><xsl:value-of select="@pos"/></TD></TR>
            </xsl:for-each>
            </TABLE>
    </body>
    </html>
    </xsl:template>
</xsl:stylesheet>

Alle normale HTML en "vaste gegevens" worden geplaatst maar geen gegevens uit het xml-bestand. Kan iemand mij uitleggen waar dat aan ligt? Wordt bijvoorbeeld de link tussen beide bestanden niet goed gelegd of vraag ik de gegevens op een verkeerde manier op?

Verwijderd

Er vielen mij twee dingen op nl:

de xml namespace voor de xsl heeft een versie nummer in jou code, terwijl als je het zonder versie schrijft dit het probleem oplost nl:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

ten tweede selecteer je het eerste attribuut niet correct, dit zou moeten zijn:

<xsl:value-of select="@campaign"/>

dan komt het er zo uit te zien:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Google Adwords Report</title>
</head>
<body bgcolor="#cccccc">
<table border="1" width="100%">
<tr>
<td>campaign</td>
<td>keyword</td>
<td>headline</td>
<td>imps</td>
<td>clicks</td>
<td>ctr</td>
<td>pos</td>
</tr>

<xsl:for-each select="report/table/rows/row">
<xsl:sort select="@keyword" />
<tr>
<td><font color="red">1</font><xsl:value-of select="@campaign"/></td>
<td><font color="red">2</font><xsl:value-of select="@keyword"/></td>
<td><font color="red">3</font><xsl:value-of select="@headlines"/></td>
<td><font color="red">4</font><xsl:value-of select="@imps"/></td>
<td><font color="red">5</font><xsl:value-of select="@clicks"/></td>
<td><font color="red">6</font><xsl:value-of select="@ctr"/></td>
<td><font color="red">7</font><xsl:value-of select="@pos"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

succes ermee

Verwijderd

Topicstarter
Perfect! Het werkt.

Eenvoudige oplossingen zijn altijd prettig :)