사파리에서 xsltprocessor () 지원이 없습니까?
-
19-09-2019 - |
문제
어떤 이유로 든, 나는 얻을 수 없습니다 XSLTProcessor()
항상 일하기 위해.
여기 내 JS가 있습니다.
... xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xmlRequest.responseXML);
// Pass variables
xsltProcessor.setParameter(null, "sectionNumber", section);
xsltProcessor.setParameter(null, "entryNumber", elementNo);
// Transform XML using XSL
var resultDocument = xsltProcessor.transformToFragment(phonebookDump,document);
// Append to document
document.getElementById('three').appendChild(resultDocument);
잘 작동합니다: OSX의 Firefox, OSX의 iPhone 시뮬레이터, OSX의 Safari
전혀 작동하지 않습니다: iPhone의 Mobile Safari, Windows의 Safari
내가 뭔가를 놓치고 있습니까? 해결 방법이 있습니까? XSLTProcessor()
? 어쨌든 서버 측 XSLT 처리는 모바일 개발에 더 빠를까요?
해결책
기본 OS X 구현에는 OS X의 데스크탑 버전에있는 관련 라이브러리가 포함되어 있지 않기 때문에 Mobile Safari는 XSLT를 지원하지 않습니다.
어쨌든 서버 측 처리는 모바일 앱의 경우 더 빠릅니다. 휴대 전화에서 서버로 합리적으로 전환 할 수있는 처리는 승리입니다.
다른 팁
JS 코드가 옳은 것 같습니다. Safari (및 Safari Mobile도)는 XSLT 지원을 제공합니다. 그것은 단지 무자비한 구현 일뿐입니다. 문제는 때때로 그것이 실패 할 때 전혀 말이되지 않기 때문에 작동하지 않는 것처럼 보일 수 있다는 것입니다.
WebKit XSL 엔진은 LIBXSL을 기반으로 하므로이 라이브러리를 기반으로 모든 소프트웨어를 사용하여 문서에서 스타일 시트를 테스트 할 수 있습니다. 나는 Safari처럼 실패하지만 훨씬 더 많은 출력을 제공하는 XSLProc을 개인적으로 사용합니다.
문제에서 벗어날 수없는 경우 XSLT와 XML 파일을 게시하십시오.