2014-01-16 4 views
4

Я пытаюсь включить HTML поля ввода, такие как:MathJax рендеринга HTML поля ввода в MathML

<input id="txtBox" type="text" size="1" style="text-align: center"> 

В рамках уравнений MathML. Когда я изначально создавал и тестировал их локально на Firefox, все выглядело прекрасно (изначально он отображает контент). Однако теперь, когда я загрузил его на наш сайт, который использует mathjax 2.01 для рендеринга содержимого, я получаю ошибки «Неизвестный тип узла: ввод» везде, где должно быть поле ввода. В настоящее время у меня есть коробки, упакованные в

<annotation> 

теги, как описано в другом сообщении здесь, однако я все еще получаю ту же ошибку.

<script type="math/mml"> 
<math> 
    <mstyle displaystyle="true"> 
    <msup> 
     <mi>x</mi> 
     <semantics> 
     <annotation-xml encoding="application/xhtml+xml"> 
     <input xmlns="http://www.w3.org/1999/xhtml" style="text-align:right" type="text" size="2" name="n" /></input> 
    </annotation-xml> 
    </semantics> 
</msup> 
<mo>+</mo> 
<semantics> 
    <annotation-xml encoding="application/xhtml+xml"> 
    <input xmlns="http://www.w3.org/1999/xhtml" type="text" size="2" name="b" /></input> 
    </annotation-xml> 
</semantics> 
</mstyle> 
</math> 
</script> 
+0

Если требуется больше информации, связанной с проблемой, я могу предоставить некоторые изображения и т. Д. По мере необходимости. Я по-прежнему не могу решить эту проблему прямо сейчас и обратиться за помощью. – Glynbeard

ответ

5

В спецификации MathML3.0 не предусмотрены элементы HTML, встроенные непосредственно в MathML. HTML5 расширил определение, чтобы позволить HTML-тегам в элементах токена в MathML, например <mtext>. Однако MathJax был разработан до того, как HTML5 был завершен, и он следует спецификации MathML3.0, поэтому HTML-теги вообще не допускаются.

Можно использовать элементы <semantics> и <annotation-xml> для включения HTML в MathML. Обратите внимание, что <annotation> и <annotation-xml> могут отображаться только в виде детей <semantics>, поэтому вам нужны оба. Кроме того, тело тега <annotation> должно быть простым текстом, а не тегами HTML, поэтому для включения HTML вы должны использовать <annotation-xml> не <annotation>. Наконец, вам необходимо указать атрибут encoding для тега <annotation-xml>, а для содержимого аннотации нужен атрибут xmlns, чтобы убедиться в его синтаксическом анализе в пространстве имен popper.

Вот пример, который работает с MathJax, а также родной MathML в Firefox:

<script type="math/mml"> 
<math> 
    <mstyle displaystyle="true"> 
    <msup> 
     <mi>x</mi> 
     <semantics> 
     <annotation-xml encoding="application/xhtml+xml"> 
      <input xmlns="http://www.w3.org/1999/xhtml" style="text-align:right" type="text" size="2" name="n" /> 
     </annotation-xml> 
     </semantics> 
    </msup> 
    <mo>+</mo> 
    <semantics> 
     <annotation-xml encoding="application/xhtml+xml"> 
     <input xmlns="http://www.w3.org/1999/xhtml" type="text" size="2" name="b" /> 
     </annotation-xml> 
    </semantics> 
    </mstyle> 
</math> 
</script> 

Мы надеемся улучшить ситуацию в будущей версии MathJax, но сейчас это единственная альтернатива. Надеюсь, это сработает для вас.

+0

Спасибо за помощь! Он отлично работает в Firefox и даже в Internet Explorer, однако он дает мне следующую ошибку в chrome: Анализ ошибок MathML: ошибка в строке 1 в столбце 378: Несоответствие размыкания и окончания тега: строка ввода 0 и аннотация-xml Есть ли способ исправить это? Я не думаю, что на самом деле происходит несоответствие. – Glynbeard

+0

Возможно, это связано с самозакрывающимся тегом ''. Попробуйте сделать это '' и посмотреть, поможет ли это. –

+0

Хм, я пробовал это и до сих пор получаю ту же ошибку только в хроме. Есть ли что-нибудь еще, что я могу попробовать? Если бы я мог просто заставить его работать на хроме, я бы хорошо пошел! Еще раз спасибо за вашу помощь. – Glynbeard

Смежные вопросы