2015-09-27 3 views
1

Я новичок в XSLT и StackOverflow. Я пытаюсь использовать таблицу стилей TEI Boilerplate для рендеринга документа TEI в браузере. Все идет хорошо, пока я не попытаюсь заставить MathJax отображать формулы. Я изменил teibp.xsl от моей локальной копии TEI шаблонного включитьXSLT и MathJax

<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 bookmarklet, но это не дает ее визуализации.

Я делаю что-то действительно глупое? Кто-нибудь сможет указать мне в правильном направлении? Я вставляю минимальный 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> 
+0

В вашем вопросе есть пробелы после «... config = TeX-» в теге скрипта, загружающем MathJax. Это сломает вещи на живой странице. –

+0

Спасибо - я думаю, что это ошибка, когда я пытался отступить в редакторе SO. Это правильно в моем файле xsl (и теперь я исправил его здесь). – rc1988

+0

Ну, что показывает консоль ошибок вашего браузера (нажмите F12, чтобы открыть инструменты разработчика), есть ли какие-либо ошибки Javascript? –

ответ

0

Насколько я могу судить, таблицы стилей, которые используют преобразует XML в XHTML с xsl:output method="xml", это выглядит так, как будто этой комбинации (XHTML генерируется в результате на стороне клиента XSLT) вместе с MathJax перерывами, по крайней мере, он работает в простом тестовом примере, как http://home.arcor.de/martin.honnen/xslt/test2015092902.xml в обоих Firefox (сообщение об ошибке «TypeError: this.div.style undefined») и Chrome («Uncaught TypeError: Невозможно установить свойство« display undefined »). В аналогичном случае 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 без пространств имен.