2015-08-24 6 views
2

Я пытаюсь сделать математическую нотацию или выражение инфиксного от содержания MathML,содержания MathML в инфиксную запись с использованием ctop.xsl не получает в нужном формате

творю помощь ctop.xsl для этого:

/***ctop.xsl**/ 

Refer

Это может быть разобрана, чтобы получить выражение следующим образом:

<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("contentmathml.xml"); 
xsl = loadXMLDoc("ctop.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> 

Здесь contentmathml.xml мой вход

Я имею содержание MathML как:

Вход:

<math><apply><power></power><ci>x</ci><cn>2</cn></apply></math> 

Я получаю в качестве выхода: x2

Ожидаемое: x^2

Я попытался снова, как вход:

<math><apply><sin></sin><ci>x</ci></apply></math> 

выход: SiNx Ожидаемый результат: Sin (х) '

Как я могу изменить ctop.xsl в такой способ получить инфикс как выход?

+0

Пожалуйста, разместите XML-ввод как код. Является ли XML-вход в пространстве имен MathML? Почему вы пытаетесь использовать таблицу стилей, которая создает вывод XML для вставки узлов в HTML-документ? –

+0

@MartinHonnen вход представляет собой содержание mathml. Я хочу преобразовать его в математическую нотацию, чтобы он мог быть передан моей программе python! – user1989

+0

Я не думаю, что вы должны применять «ctop.xsl» непосредственно к вашему XML, так как все шаблоны в XSLT используют атрибут «mode», поэтому изначально шаблоны не будут сопоставляться. Вы должны использовать его как файл «include» в другом XSLT, где вы делаете «xsl: apply-templates» с режимом для выбора первого элемента. См. Http://www.w3.org/Math/XSL/mathml.xsl в качестве примера (хотя вы, вероятно, не хотите копировать это как есть). –

ответ

1

Ваш вход неправильно, оно должно быть в пространстве имен MathML:

<math xmlns="http://www.w3.org/1998/Math/MathML"> 
    <apply><power></power><ci>x</ci><cn>2</cn></apply> 
</math> 

Не напрямую связана с вашей проблемой, но есть более новая, поддерживается, версия ctop.xsl стилей здесь

https://github.com/davidcarlisle/web-xslt/tree/master/ctop