Safariapple Inc.

Safari
Post marked as unsolved

Safari Apple Computer

iOS14 Safari browser : new XSLTProcessor().importStylesheet(xsl_file)).transformToDocument(newParsedXML) removes the href attribute from the <a> tag

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. We don't have any change log information yet for version 5.1.7 of Safari. Sometimes publishers take a little while to make this information available, so please check back in a few days to see if it has been updated.

Safari Apple Inc

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>			<meta charset='utf-8'>			<title>Blank Form</title>			<h1>SAMPLE HTML PAGE</h1> </head><body><button>Click for XSLT Transformation</button><div><br>	 <h3> Transformed XML Document </h3> :	<span></span></div><script>function doTransform() {	 //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);	 // dom.loadXML(response);		var objDOMParser = new DOMParser();		var objDoc = objDOMParser.parseFromString(response, 'text/xml'); while (dom.hasChildNodes())		dom.removeChild(dom.lastChild);		for (var i=0; i < objDoc.childNodes.length; i++) {				var objImportedNode = dom.importNode(objDoc.childNodes[i], true);				dom.appendChild(objImportedNode);		} //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();		var objDoc = objDOMParser.parseFromString(response, 'text/xml'); while (this.hasChildNodes())		this.removeChild(this.lastChild);		for (var i=0; i < objDoc.childNodes.length; i++) {				var objImportedNode = this.importNode(objDoc.childNodes[i], true);				this.appendChild(objImportedNode);		}}</script></body></html> XSL file : <?xml version='1.0' encoding='UTF-8'?><xsl:stylesheet version='1.0'xmlns:xsl='link'><xsl:template match='/'>	<html>	<body>		<h2> My Data : </h2>		<table border='1'>			<tr bgcolor='#9acd32'>				<th>Title</th>				<th>Artist</th> <th>Address</th>			</tr>			<tr>				<td><xsl:value-of select='catalog/cd/title'/></td>				<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>			</tr>		</table>	</body>	</html></xsl:template></xsl:stylesheet>