[XML XSLT] Weergave in IE11 hulp gevraagd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 30-09 08:35

Xymox

Determinism rulez !

Topicstarter
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:

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


Acties:
  • 0 Henk 'm!

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Specifieke Xpath functies zijn altijd problematisch geweest, wat ik altijd heb gedaan is de XML en XSL files combineren middels een server-side oplossing. In mijn geval was dat zo'n 15 jaar geleden :+ gewoon een classic ASP 3.0 script gebruik makende van MSXML. Als laatste versie gebruikte ikzelf 4.0. Die biedt (of bood) veel meer native functies welke direct bruikbaar waren.

Dan heb je dus wel een server nodig die dit gaat parsen voor je.

Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 30-09 08:35

Xymox

Determinism rulez !

Topicstarter
Blue-eagle schreef op dinsdag 12 april 2016 @ 13:13:
Dan heb je dus wel een server nodig die dit gaat parsen voor je.
Die heb ik dus hier niet. Het betreft een standalone Windows applicatie die XML bestanden die lokaal staan opgemaakt moet weergeven in een webbrowser control.

[ Voor 10% gewijzigd door Xymox op 12-04-2016 14:27 ]

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


Acties:
  • 0 Henk 'm!

  • Milmoor
  • Registratie: Januari 2000
  • Laatst online: 18:19

Milmoor

Footsteps and pictures.

Xymox schreef op dinsdag 12 april 2016 @ 12:16:
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...
Je geeft voorbeelden van wat het wel doet. Mag ik ook een voorbeeld van iets wat het niet doet? Nu is het blind zoeken. Werkt het wel in Chrome? Heb je een live voorbeeld? Ik heb zelf ruzie met XSLT en Edge, IE11 lukt me wel. Voorbeeld: https://dagboek.op-stelten.nl. Dit voorbeeld is trouwens geheel clientside.

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.


Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 30-09 08:35

Xymox

Determinism rulez !

Topicstarter
Milmoor schreef op dinsdag 12 april 2016 @ 19:26:
[...]

Mag ik ook een voorbeeld van iets wat het niet doet?
Jazekers.

Een simpel voorbeeld, het bepalen van de huidige datum/tijd met:

XML:
1
      <xsl:variable name="dtStart" select="current-dateTime()" />


De output is dan text, zonder opmaak.

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


Acties:
  • 0 Henk 'm!

  • Milmoor
  • Registratie: Januari 2000
  • Laatst online: 18:19

Milmoor

Footsteps and pictures.

Werkt deze test bij jou onder Chrome? https://dl.dropboxusercon...9510756/dagboek/test.html. Die gebruikt ook dit soort opvragingen (kolom property value). Zo ja, werkt het als je de XML en XSL overzet naar jouw code (deze werkt niet onder IE)?

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.


Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 30-09 08:35

Xymox

Determinism rulez !

Topicstarter
Je test werkt onder Chrome en Firefox. Niet met IE11.

Ik weet echter niet wat je bedoelt met XML en XSL overzetten. Welke XML en welke XSL?

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


Acties:
  • 0 Henk 'm!

  • Milmoor
  • Registratie: Januari 2000
  • Laatst online: 18:19

Milmoor

Footsteps and pictures.

Het klopt dat het niet onder IE werkt. Dat was toen niet mijn bedoeling. https://dagboek.op-stelten.nl doet dat wel, maar is veel minder overzichtelijk. Als je in jouw code de XML en XSL gebruikt zoals hieronder gedefinieerd (wordt vanuit de html aangeroepen), werkt het dan wel? En als je IE zegt, welke versie bedoel je dan? 10, 11, Enterprise, Edge?

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
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="processorTest2.xml"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

<xsl:output
  method="html"
  encoding="UTF-8"
  indent="yes"
  doctype-public="-//W3C//DTD HTML 4.01//EN"
  doctype-system="http://www.w3.org/TR/html4/strict.dtd"/>
  
<xsl:template match="/">
  <html lang="en">
    <head>
      <title>XSLT processor test</title>
    </head>
    <body>
      <h1>XSLT processor test</h1>
      <div>
        <table border="1">
          <thead>
            <tr>
              <th>property name</th>
              <th>property value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>xsl:version</td>
              <td><xsl:value-of select="system-property('xsl:version')"/></td>
            </tr>
            <tr>
              <td>xsl:vendor</td>
              <td><xsl:value-of select="system-property('xsl:vendor')"/></td>
            </tr>
            <tr>
              <td>xsl:vendor-url</td>
              <td><xsl:value-of select="system-property('xsl:vendor-url')"/></td>
            </tr>
            <tr>
              <td>msxsl:version</td>
              <td><xsl:value-of xmlns:msxsl="urn:schemas-microsoft-com:xslt" select="system-property('msxsl:version')"/></td>
            </tr>
          </tbody>
        </table>
      </div>
    </body>
  </html>
</xsl:template>

</xsl:stylesheet>

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.

Pagina: 1