У меня есть файл xml, как это
<math><apply><power></power><ci>x</ci><cn>2</cn></apply></math>
У меня есть файл xsl как файл xsl
Я пытаюсь взять этот файл xsl за основу и пытаюсь преобразовать его в математическое выражение, используя javascript и xml, ссылаясь на логику в xsl.
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("example").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
Но я не получаю это как вместо этого я получаю его как x2.вместо x^2.Как внести изменения в xsl, чтобы получить это как x^2 .
Когда я проверил, я обнаружил, что силовая часть в xsl выглядит следующим образом:
<!-- 4.4.3.7 power -->
<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:power]]">
<mml:msup>
<xsl:apply-templates mode="c2p" select="*[2]">
<xsl:with-param name="p" select="5"/>
</xsl:apply-templates>
<xsl:apply-templates mode="c2p" select="*[3]">
<xsl:with-param name="p" select="5"/>
</xsl:apply-templates>
</mml:msup>
</xsl:template>
Что нужно изменить в xsl, чтобы получить x^2 вместо x2??
mml:
, а в вашем XML нет ни одного. - person Joel M. Lamsen   schedule 25.08.2015