Ik heb een xmlletje waar ik een xslletje op los laat dat er zo uit ziet:
Nu krijg ik hier (verkort) de volgende xml uit:
Echter wil ik behalve de eerste regel alles op één regel hebben gescheiden door die gekke þ dingen.
Ik wil namelijk gewoon de hele <messagebody> er uit pakken en in een ascii file wegschrijven. Maar die xsl gooit alles op een nieuwe regel. En ik wil eigenlijk niet bij het wegschrijven gaan filteren op newlines...
Iemand enig idee hoe ik dit voor elkaar krijg en tevens m'n xslt leesbaar houdt?
Edit: Gebruik de MSXML engine
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| <?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/MSG">
<MESSAGES-OUT>
<resources>
<resource>
<comm_code><xsl:value-of select="resources/resource/comm_code"/></comm_code>
</resource>
</resources>
<messages>
<xsl:for-each select = "stop">
<xsl:for-each select = "planactions/planaction">
<xsl:if test ="count(kind) > 0">
<messagebody>
<xsl:call-template name="getHeader" />
<xsl:value-of select="kind"/>þ
<xsl:if test="kind = 'deliver' or kind = 'pickup'">
<xsl:call-template name="pick_deliver" />
</xsl:if>
<xsl:if test="kind = 'couple' or kind = 'decouple'">
<xsl:call-template name="couple_decouple" />
</xsl:if>
</messagebody>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</messages>
</MESSAGES-OUT>
</xsl:template>
<xsl:template name="pick_deliver">
<xsl:value-of select="planned-starttime"/>þ
þ
<xsl:value-of select="ancestor::node()/trip/id"/>þ
<xsl:value-of select="id"/>þ
<xsl:value-of select="order_number"/>þ
<xsl:value-of select="product_name"/>þ
<xsl:call-template name="getAmount" />
<xsl:value-of select="destination"/>þ
þ
</xsl:template>
<xsl:template name="couple_decouple">
<xsl:value-of select="planned-starttime"/>þ
þ
<xsl:value-of select="ancestor::node()/trip/id"/>þ
<xsl:value-of select="id"/>þ
<xsl:value-of select="order_number"/>þ
<xsl:value-of select="vlootnr"/>þ
<xsl:value-of select="bak1"/>þ
<xsl:value-of select="bak2"/>þ
þ
</xsl:template>
<xsl:template name="getHeader">028000 1234 
</xsl:template>
<xsl:template name="getAmount">
<xsl:value-of select="amounts/amount[2]/value"/>þ
PLþ
</xsl:template>
</xsl:stylesheet> |
Nu krijg ik hier (verkort) de volgende xml uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <messagebody>
028000 1234
pickupþ
2005-02-16T09:12:34þ
þ
þ
10þ
FABRIEK HARDERWIJKþ
33341þ
þ
HARDERWIJKþ
00212205þ
STENEN & BLOKKENþ
15000þ
PLþ
ROTTERDAMþ
þ
</messagebody> |
Echter wil ik behalve de eerste regel alles op één regel hebben gescheiden door die gekke þ dingen.
Ik wil namelijk gewoon de hele <messagebody> er uit pakken en in een ascii file wegschrijven. Maar die xsl gooit alles op een nieuwe regel. En ik wil eigenlijk niet bij het wegschrijven gaan filteren op newlines...
Iemand enig idee hoe ik dit voor elkaar krijg en tevens m'n xslt leesbaar houdt?
Edit: Gebruik de MSXML engine
[ Voor 21% gewijzigd door youngster op 15-02-2005 12:11 ]
Real programmers don't comment their code... it was hard to write, it should be hard to read!