내 페이지에 탐색 버튼을 넣으려고하는데 콘텐츠 파일을로드하지만 이러한 파일은 XML이고 XSL 변환으로 스타일을 지정해야합니다. 나는 과거에 w3schools.com의 클라이언트 코드에서 XSL을 사용하여 성공을 거두었으므로 아래에서이를 적용했습니다. 그러나, 뭔가 내 javascript 및 jquery, 또는 어쩌면 내가 매개 변수를 올바르게 전달하지 않는 함께 작동하지 않는 것으로 보입니까? 파이어 버그는 'xsl'변수를로드 할 수 없다고 알려줍니다. 이 문법이 잘못된 것 같습니까? 나는 이것에 아주 새롭고, 내가 뭘 잘못하고 있는지 알 수 없다. 은 DisplayResults 기능은 당신이 기능을 전달하는 파일 이름을 처리하는 것 xml 형식의 문서를 처리되지 않도록javascript와 jquery를 XSL 변환 또는 함수 매개 변수를 사용하여 혼합하는 문제가 있습니까?
<script>
$(document).ready(function(){
$("#aboutTextButton").click(function(){
$('#contentContainer').load('about-text.html');
});
$("#aboutProjectButton").click(function(){
$('#contentContainer').load('about-project.html');
});
$("#catalogButton").click(function(){
displayResult("catalog.xml","xml-style2.xsl");
});
$("#transcriptionButton").click(function(){
displayResult("behaviour.xml","xml-style2.xsl");
});
});
//script to transform XML, adapted from w3schools.com
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
function displayResult(xml, xsl)
{
// code for IE
if (window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById("example").innerHTML=ex;
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
document.getElementById("contentContainer").appendChild(resultDocument);
}
}
</script>
</head>
<body>
<div id="headerImg">
<img src="cover.jpg">
</div>
<div id="menu">
<ul>
<li><a id="aboutTextButton">About the Text</a></li>
<li><a id="aboutProjectButton">About the Project</a></li>
<li><a id="catalogButton">Browse the Images</a></li>
<li><a id="transcriptionButton">Read the Text</a></li>
</ul>
</div>
<div id="contentContainer">
</div>
MDN 사이트의 [이 페이지보기] (https://developer.mozilla.org/en/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations) ".importStylesheet()"를 잘못 사용했습니다. – Pointy
자바 스크립트를 통해 적용된 XSL 변환이 자주 표시되지 않습니다. 대부분의 경우, xml을 브라우저로 직접 보내고 브라우저가 다음과 같은 처리 명령어를 사용하여 xslt를 처리하도록 할 수 있지만 페이지가 전송되기 전에 서버에서 처리됩니다.' xml-stylesheet type = "text/xsl "href ="... "? ...'... ... 서버 측은 일반적으로 선호되는 방식이고 자바 스크립트가없는 클라이언트 측은 xsl이 현저하게 잘 지원되므로 javascript를 사용할 이유가 없습니다. 거의 사용되지는 않지만 브라우저간에 (심지어 ie6는 거의 100 % 올바르게 표시됩니다.) –
다른 많은 사람들이 그것에 대해 묻는 것을 보았습니다. 이제는 더 일반적 일 수 있습니다. 어쨌든 실제로 javascript로 xsl을 적용해야하는지 여부를 고려하십시오. 서버에 적용하는 것이 더 좋을 수도 있고 브라우저에서 자바 스크립트를 사용하지 않고 수행하는 것이 더 나을 수도 있습니다. –