In the Xopus team, we follow the developments of the browser landscape closely. Both to make use of new functionality introduced in modern browsers, and to make sure our product keeps functioning in the new browsers that are released.

In the case of Microsoft Edge, the radical new successor to Microsoft Internet Explorer, we haven't yet managed to do so. In this new browser, quite a few things have been changed compared to Internet Explorer. In many cases, this is for the better, as this brings this browser closer to the other browsers like Firefox and Chrome. However in one specific case, we have found a change that is making it much harder for us to support this browser.
In our process of editing XML documents, we make use of processing instructions. These processing instructions can then be queried using XPath. This works in all browsers, even Microsoft Edge, except when these processing instructions are placed after the root node of the document. There is no mention in the XML standards that indicate this should not be supported, and all browsers, even older versions of Internet Explorer, support this.
If you are interested in seeing this in action, you can take a look at the example hosted here: http://xopus.com/files/edgexsl.zip. If you're trying this on your own machine, be aware that client-side XSLT cannot be used from file://, so run in a webserver.

In this example we have the following XML:

<?xml version="1.0"?>
<test></test><?foo bar?>

And we execute the following XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/"><xsl:value-of select="count(processing-instruction('foo'))" /></xsl:template>
</xsl:stylesheet>

The following browsers see this processing instruction, and return 1:

  • Microsoft Internet Explorer 8, 9, 10, 11
  • Google Chrome
  • Mozilla Firefox

Other XSLT processors like Saxon or Xerces also return 1 for this example.

Microsoft Edge returns 0, it looks like the processing instruction doesn't exist.

We are dependent on the browsers implementing the specifications correctly, and we have reported this issue to Microsoft and are working with them to get this fixed.

In the meantime, please let us know your plans with Microsoft Edge. Are your applications in which Xopus is used supported in Microsoft Edge? Do you feel pressure from end users or your IT organization to be compatible with Microsoft Edge?

Anonymous