Как использовать код для MATH MML в Jquery в XML Parser - PullRequest
0 голосов
/ 19 ноября 2018

С помощью JQuery XML Parser все работает хорошо.У меня есть коды для уравнения, в то время как я пытаюсь найти код его возврата нет.Но код на самом деле в XML.Я не знаю точную причину, почему это не находит.Может быть, узел xml содержит «:», что является причиной, или нет.Можете ли вы помочь мне найти код mml: math

XML Code

<p>
  <disp-formula id="disp-formula3-xxxx">
    <label>(3)</label>
    <alternatives>
      <mml:math id="math15-xxxx" display="block">
        <mml:mrow>
          <mml:mi mathvariant="normal">Risk</mml:mi>
          <mml:mo>=</mml:mo>
          <mml:mstyle displaystyle="true">
            <mml:mrow>
              <mml:mo>&#x0222B;</mml:mo>
            </mml:mrow>
          </mml:mstyle>
          <mml:mi mathvariant="double-struck">P</mml:mi>
          <mml:mspace width="0.25em"/>
          <mml:mspace width="0.25em"/>
          <mml:mo stretchy="false">[</mml:mo>
          <mml:mi mathvariant="normal">Load Events</mml:mi>
          <mml:mo stretchy="false">]</mml:mo>
          <mml:mo>&#x000D7;</mml:mo>
          <mml:mi mathvariant="double-struck">P</mml:mi>
          <mml:mspace width="0.25em"/>
          <mml:mo stretchy="false">[</mml:mo>
          <mml:mi mathvariant="normal">Responses</mml:mi>
          <mml:mo>|</mml:mo>
          <mml:mi mathvariant="normal">Loads</mml:mi>
          <mml:mo stretchy="false">]</mml:mo>
          <mml:mo>&#x000D7;</mml:mo>
          <mml:mi mathvariant="double-struck">C</mml:mi>
          <mml:mspace width="0.25em"/>
          <mml:mo stretchy="false">[</mml:mo>
          <mml:mi mathvariant="normal">Loads</mml:mi>
          <mml:mo>,</mml:mo>
          <mml:mi mathvariant="normal">Responses</mml:mi>
          <mml:mo stretchy="false">]</mml:mo>
        </mml:mrow>
      </mml:math>
      <graphic xlink:href="10.1177_1687814018802531-eq3.tif"/>
    </alternatives>
  </disp-formula>
</p>

В JQUERY

alert($xml.find("mml:math").length)

он возвращает ноль.Я должен проверить много кода на основе Math MML кода.Можете ли вы помочь мне понять, в чем проблема здесь

1 Ответ

0 голосов
/ 19 ноября 2018

Чтобы использовать любой из метасимволов (например, !"#$%&'()*+,./:;<=>?@[\]^`{|}~) в качестве литеральной части имени, необходимо экранировать его двумя обратными слешами: \\. Документы

Так что вам нужно экранировать : в вашем селекторе и использовать

$xml.find("mml\\:math").length

var $xml = $.parseXML($("#xml").html().trim());
var leng = $($xml).find('mml\\:math').length;
console.log(leng);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="xml">
  <p>
    <disp-formula id="disp-formula3-xxxx">
      <label>(3)</label>
      <alternatives>
        <mml:math id="math15-xxxx" display="block">
          <mml:mrow>
            <mml:mi mathvariant="normal">Risk</mml:mi>
            <mml:mo>=</mml:mo>
            <mml:mstyle displaystyle="true">
              <mml:mrow>
                <mml:mo>&#x0222B;</mml:mo>
              </mml:mrow>
            </mml:mstyle>
            <mml:mi mathvariant="double-struck">P</mml:mi>
            <mml:mspace width="0.25em"/>
            <mml:mspace width="0.25em"/>
            <mml:mo stretchy="false">[</mml:mo>
            <mml:mi mathvariant="normal">Load Events</mml:mi>
            <mml:mo stretchy="false">]</mml:mo>
            <mml:mo>&#x000D7;</mml:mo>
            <mml:mi mathvariant="double-struck">P</mml:mi>
            <mml:mspace width="0.25em"/>
            <mml:mo stretchy="false">[</mml:mo>
            <mml:mi mathvariant="normal">Responses</mml:mi>
            <mml:mo>|</mml:mo>
            <mml:mi mathvariant="normal">Loads</mml:mi>
            <mml:mo stretchy="false">]</mml:mo>
            <mml:mo>&#x000D7;</mml:mo>
            <mml:mi mathvariant="double-struck">C</mml:mi>
            <mml:mspace width="0.25em"/>
            <mml:mo stretchy="false">[</mml:mo>
            <mml:mi mathvariant="normal">Loads</mml:mi>
            <mml:mo>,</mml:mo>
            <mml:mi mathvariant="normal">Responses</mml:mi>
            <mml:mo stretchy="false">]</mml:mo>
          </mml:mrow>
        </mml:math>
        <graphic xlink:href="10.1177_1687814018802531-eq3.tif"/>
      </alternatives>
    </disp-formula>
  </p>
</div>
...