Ik heb mij niet eerder met XML/XSLT gezig gehouden, maar heb nu wel een requirement gekregen waar ik het zeker nodig ga hebben. Ik probeer van alles, maar ik krijg het gewoon niet werkend.
Dit is de requirement: weergave van een chat sessie in IE11/webbrowser control.
- De chat sessie is opgeslagen als een XML bestand
- Weergave op een form (Windows) welke een webbrowser control heeft (IE11)
Ik hoop dat iemand mij hier verder mee kan helpen, want tot een zeker punt werkt de XSLT gewoon niet meer.
Eerst maar de inhoud van een chat sessie als XML. Ik heb daar reeds een reference naar de XSLT ingezet:
De structuur is simpel: eerst een header met starttijd.
Daarna de twee chatters, met de namen (nicks)
En daarna een herhaling van messages van de chatters. De tijd is een offset van de starttijd.
Dan hier de XSLT:
De XML en XSTL werken hier. Ziet er nog niet uit, maar de opmaak komt later wel.
(XML wordt geopend in IE11 of in de webbrowser control).
Echter zodra ik XPATH2 functies wil gaan gebruiken doet niets het meer. Leeg scherm is het resultaat.
Deze functies heb ik nodig om bijvoorbeeld de datum goed weer te geven warabij ik de offset bij de startdatum optel.
Wellicht zijn er IE11 compatibiliteits issues waar ik geen weet van heb...
Wat ik uiteindelijk wil bereiken is:
- Een lijst met datum/tijd, nickname, message
(waarbij nickname wordt bepaald dmv de userid -> nickname die eerder in het XML bericht is opgenomen).
De oplossing mag wat mij betreft ook in jscript/vbscript worden gedaan als dat beter/makkelijker is.
Uiteindelijk moet ik 1 XML volgens de specs weergeven waarbij ik alles in HTML/XML bestanden wil doen en geen code van buitenaf aanroepen.
Wie mij opweg kan helpen?
Dit is de requirement: weergave van een chat sessie in IE11/webbrowser control.
- De chat sessie is opgeslagen als een XML bestand
- Weergave op een form (Windows) welke een webbrowser control heeft (IE11)
Ik hoop dat iemand mij hier verder mee kan helpen, want tot een zeker punt werkt de XSLT gewoon niet meer.
Eerst maar de inhoud van een chat sessie als XML. Ik heb daar reeds een reference naar de XSLT ingezet:
XML:
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
| <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="chat_v2.xslt"?> <chatTranscript startAt="2016-03-31T11:53:53Z" sessionId="000MHaBE8URA0PQ7"> <newParty userId="036F56FD0FD1000F" eventId="1" timeShift="3" visibility="ALL"> <userInfo personId="" userNick="JohnDoe" userType="CLIENT" protocolType="FLEX" timeZoneOffset="120"/> <userData> <item key="EmailAddress">johndoe@someaccount.nl</item> <item key="FirstName">John</item> <item key="LastName">Doe</item> </userData> </newParty> <newParty userId="036F56FD10230011" eventId="2" timeShift="83" visibility="ALL"> <userInfo personId="ID0001" userNick="Henk Agent" userType="AGENT" protocolType="BASIC" timeZoneOffset="120"/> </newParty> <message userId="036F56FD10230011" eventId="4" timeShift="92" visibility="ALL"> <msgText treatAs="NORMAL">Hallo John</msgText> </message> <message userId="036F56FD0FD1000F" eventId="5" timeShift="114" visibility="ALL"> <msgText msgType="text" treatAs="NORMAL">Hoi Henk</msgText> </message> <partyLeft userId="036F56FD0FD1000F" askerId="036F56FD0FD1000F" eventId="6" timeShift="119" visibility="ALL"/> <partyLeft userId="036F56FD10230011" askerId="036F56FD10230011" eventId="7" timeShift="119" visibility="ALL"> <reason code="2">left with request to close forcedly</reason> </partyLeft> </chatTranscript> |
De structuur is simpel: eerst een header met starttijd.
Daarna de twee chatters, met de namen (nicks)
En daarna een herhaling van messages van de chatters. De tijd is een offset van de starttijd.
Dan hier de XSLT:
XML:
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
| <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:output method="html"/> <xsl:template match="/"> <html> <body> <h2>Chat1</h2> <table border="1"> <tr bgcolor="#9acd32"> <th style="text-align:left">Time</th> <th style="text-align:left">User ID</th> <th style="text-align:left">Message</th> </tr> <xsl:variable name="dtStart" select="chatTranscript/@startAt" /> <xsl:for-each select="chatTranscript/message"> <tr> <xsl:variable name="dtTimeShift" select="@timeShift" /> <td><xsl:value-of select="@timeShift"/></td> <td><xsl:value-of select="@userId"/></td> <td><xsl:value-of select="msgText"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> |
De XML en XSTL werken hier. Ziet er nog niet uit, maar de opmaak komt later wel.
(XML wordt geopend in IE11 of in de webbrowser control).
Echter zodra ik XPATH2 functies wil gaan gebruiken doet niets het meer. Leeg scherm is het resultaat.
Deze functies heb ik nodig om bijvoorbeeld de datum goed weer te geven warabij ik de offset bij de startdatum optel.
Wellicht zijn er IE11 compatibiliteits issues waar ik geen weet van heb...
Wat ik uiteindelijk wil bereiken is:
- Een lijst met datum/tijd, nickname, message
(waarbij nickname wordt bepaald dmv de userid -> nickname die eerder in het XML bericht is opgenomen).
De oplossing mag wat mij betreft ook in jscript/vbscript worden gedaan als dat beter/makkelijker is.
Uiteindelijk moet ik 1 XML volgens de specs weergeven waarbij ik alles in HTML/XML bestanden wil doen en geen code van buitenaf aanroepen.
Wie mij opweg kan helpen?
Intel i9-9900K | MSI MPG Z390 Gaming Pro Carbon | MSI RTX 2080Ti Gaming X Trio | Ballistix Sport LT (32GB) | MSI Optix MAG274QRF-QD 1440p | Samsung 970 EVO Plus (2TB) | NZXT Kraken X52 | Valve Index | Fractal Design R6 | Synology DS420j