XSLT и MathJax
Я новичок в XSLT и Stackru. Я пытаюсь использовать таблицу стилей TEI Boilerplate для рендеринга документа TEI в браузере. Все идет хорошо, пока я не попробую заставить MathJax визуализировать формулы. Я изменил teibp.xsl из моей локальной копии TEI Boilerplate, чтобы включить
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
как раз перед </head>
тег в шаблоне htmlHead. Однако, когда я загружаю документ в браузер, MathJax вообще не отображает формулу, и я просто получаю разметку LaTeX, когда набираю ее в файл XML. Я попытался переместить вызов в MathJax.js - в верхнюю часть заголовка, в различные точки тела - но не повезло. Я также попытался загрузить страницу, а затем загрузить букмарклет MathJax, но он также не отображает его.
Я делаю что-то действительно глупое? Кто-нибудь сможет указать мне правильное направление? Ниже я вставил минимальный XML-файл, который работает с TEIBP, отличным от рендеринга MathJax.
Заранее спасибо.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="teibp.xsl"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_allPlus.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>MathJax test</title>
</titleStmt>
<publicationStmt>
<p>2015</p>
</publicationStmt>
<sourceDesc>
<p>Born digital</p>
</sourceDesc>
</fileDesc>
<encodingDesc>
<p>Born digital</p>
</encodingDesc>
</teiHeader>
<text>
<body>
<p>\(ax^2+bx+c=0\)</p>
</body>
</text>
</TEI>
2 ответа
Насколько я могу судить, используемая вами таблица стилей преобразует XML в XHTML с xsl:output method="xml"
выглядит так, как будто эта комбинация (XHTML, сгенерированная как результат XSLT на стороне клиента) вместе с разрывами MathJax, по крайней мере, в простом тестовом примере, таком как http://home.arcor.de/martin.honnen/xslt/test2015092902.xml как в Firefox (сообщение об ошибке "TypeError: this.div.style не определено"), так и в Chrome ("Uncaught TypeError: Невозможно установить свойство" display "из неопределенного"). В аналогичном тестовом примере http://home.arcor.de/martin.honnen/xslt/test2015092903.xml который преобразуется в HTML без использования пространств имен и xsl:output method="html"
работает комбинация XSLT и MathJax (имеется в виду математическая формула). Однако простой тест MathJax со статическим XHTML (то есть со статическим документом XHTML) показывает, что MathJax может обрабатывать XHTML. Поэтому вам нужно, чтобы кто-то исправил MathJax для обработки X(HT)ML-результата клиентского XSLT-преобразования, или вам нужно попытаться исправить таблицу стилей, необходимую для создания HTML без пространств имен.
У меня была эта проблема, и я разрешил ее динамическую загрузку скрипта MathJax:
<script>//<![CDATA[
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/mml-svg.js';
document.head.appendChild(script);
//]]></script>