Powered by the WebKit engine, Safari offers leading performance, compatibility, and a great set of built-in web development tools. Download Safari Technology Preview. Safari is the best way to see the sites on iPhone, iPad, and Mac. Thanks to blazing-fast performance and industry-leading energy efficiency, hundreds of millions of users enjoy exploring the web with Safari. Take advantage of powerful new features, advanced developer tools, and cutting edge technologies in Safari to deliver the best-in class websites and apps. A fast, open source web browser engine. WebKit is the web browser engine used by Safari, Mail, App Store, and many other apps on macOS, iOS, and Linux. Get started contributing code, or reporting bugs.
Post marked as unsolved
iOS14 Safari browser : new XSLTProcessor().importStylesheet(xsl_file)).transformToDocument(newParsedXML) removes the href attribute from the <a> tag
Hello Team,We are seeing some issues with the XSLT transformation with iOS14 version(starting 14.1 version) and this was working fine in earlier versions.Issue : When an XSLT transformation is done using transformToDocument, we are observing that the anchor tag has the href attribute removed. Please refer to below example.Sample usage :new XSLTProcessor().importStylesheet(xsl_file)).transformToDocument(newParsedXML) Sample line from XSL file : <td><a href='javascript:alert(1)'><xsl:value-of select='catalog/cd/address'/></a></td> Expected :<a href='javascript:alert(1)'>Bangalore</a> Actual :<a>Bangalore</a> The UX is broken due to this as the links are no longer clickable with the href attribute being removed.However, when the href contains the link(as below) - this works as expected.Sample line from XSL file : <td><a href='https://www.google.com'><xsl:value-of select='catalog/cd/artist'/></a></td> Expected :<a href='https://www.google.com'>ArtistName</a> Actual :<a href='https://www.google.com'>ArtistName</a> Any help on this would be very much appreciated. Looking forward for a quick responseI have enclosed the sample HTML and the XSL file for reference.HTML : <!doctype html><html><head>&#9;&#9;&#9;<meta charset='utf-8'>&#9;&#9;&#9;<title>Blank Form</title>&#9;&#9;&#9;<h1>SAMPLE HTML PAGE</h1> </head><body><button>Click for XSLT Transformation</button><div><br>&#9; <h3> Transformed XML Document </h3> :&#9;<span></span></div><script>function doTransform() {&#9; //Create the XML var sampleXML = '<?xml version='1.0' encoding='UTF-8'?><catalog><cd><title>Test Title</title><artist>CLICK ME!</artist></cd></catalog>'; var parser = new DOMParser(); var newParsedXML = parser.parseFromString(sampleXML, 'text/xml'); //Load the XSLT file var response = getData('./././assets/xslt/emxSampleXSL.xsl'); var dom = document.implementation.createDocument(', ', null);&#9; // dom.loadXML(response);&#9;&#9;var objDOMParser = new DOMParser();&#9;&#9;var objDoc = objDOMParser.parseFromString(response, 'text/xml'); while (dom.hasChildNodes())&#9;&#9;dom.removeChild(dom.lastChild);&#9;&#9;for (var i=0; i < objDoc.childNodes.length; i++) {&#9;&#9;&#9;&#9;var objImportedNode = dom.importNode(objDoc.childNodes[i], true);&#9;&#9;&#9;&#9;dom.appendChild(objImportedNode);&#9;&#9;} //Create XSLT Processor var xslProcess = new XSLTProcessor(); xslProcess.importStylesheet(dom); //Transform the sample XML with the XSLT var transformedXML = xslProcess.transformToDocument(newParsedXML); console.log('---transformedXML---> '+transformedXML); document.getElementsByClassName('add-info')[0].style.display = 'inline'; document.getElementById('disp-div').innerHTML = new XMLSerializer().serializeToString(transformedXML);}function getData(sPath, fnCallback){ var objHTTP = new XMLHttpRequest; objHTTP.open('get', sPath, fnCallback != null); objHTTP.send(null); try { return objHTTP.responseText; } finally { objHTTP = null; }}function loadXML(response){ var objDOMParser = new DOMParser();&#9;&#9;var objDoc = objDOMParser.parseFromString(response, 'text/xml'); while (this.hasChildNodes())&#9;&#9;this.removeChild(this.lastChild);&#9;&#9;for (var i=0; i < objDoc.childNodes.length; i++) {&#9;&#9;&#9;&#9;var objImportedNode = this.importNode(objDoc.childNodes[i], true);&#9;&#9;&#9;&#9;this.appendChild(objImportedNode);&#9;&#9;}}</script></body></html> XSL file : <?xml version='1.0' encoding='UTF-8'?><xsl:stylesheet version='1.0'xmlns:xsl='link'><xsl:template match='/'>&#9;<html>&#9;<body>&#9;&#9;<h2> My Data : </h2>&#9;&#9;<table border='1'>&#9;&#9;&#9;<tr bgcolor='#9acd32'>&#9;&#9;&#9;&#9;<th>Title</th>&#9;&#9;&#9;&#9;<th>Artist</th> <th>Address</th>&#9;&#9;&#9;</tr>&#9;&#9;&#9;<tr>&#9;&#9;&#9;&#9;<td><xsl:value-of select='catalog/cd/title'/></td>&#9;&#9;&#9;&#9;<td><a href='link'><xsl:value-of select='catalog/cd/artist'/></a></td> <td><a href='javascript:alert(1)'><xsl:value-of select='catalog/cd/address'/></a></td>&#9;&#9;&#9;</tr>&#9;&#9;</table>&#9;</body>&#9;</html></xsl:template></xsl:stylesheet>
Grow your business with gift cards expire. Safari is the best way to see the sites on iPhone, iPad, and Mac. Safari Technology Preview gives you an early look at upcoming web technologies in macOS and iOS. Get the latest layout technologies, visual effects, developer tools, and more, so you can provide input on how they are implemented and deliver a best-in-class user experience on all Apple devices.
Preview the latest web technologies. Get a preview of the latest advances in Safari web technologies, including HTML, JavaScript, and CSS. Safari Technology Preview includes the most recent version of WebKit, the rendering engine that powers Safari.
Easy to update. You can update Safari Technology Preview right from the Mac App Store. Updates occur every few weeks and include the most recent version of WebKit.
Access powerful developer tools. Use the latest version of the powerful Web Inspector and Responsive Design Mode to modify, debug, and optimize your websites.
Provide feedback. Use Feedback Assistant to send feedback directly to Apple about issues and enhancement requests. Simply select Report an Issue from the Help menu in Safari Technology Preview.
Run side-by-side with Safari. Safari Technology Preview is a standalone app that works side-by-side with the current version of Safari, so you can continue to use and reference the current release.
Surf seamlessly with iCloud. Safari Technology Preview works with iCloud, so you can access your latest Safari Favorites, bookmarks, and Reading List.
Safari Apple Inc Company
Safari Apple Computer
Keep current. The WebKit blog keeps you up-to-date on the latest developments in HTML, JavaScript, and CSS.