Как преобразовать верхний индекс / нижний индекс в XML в HTML - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть следующий фрагмент XML с формулами как часть некоторого другого текста. Это преобразуется в HTML с помощью XSLT. Окончательный вывод HTML должен отражать верхний индекс. Какой правильный подход для достижения этого?

Фрагмент XML генерируется как показано ниже

<meta name="Abstract" content="We present different models used in nuclear astrophysics. In particular the role of microscopic cluster theories is emphasized. Recent applications on the triple-&amp;#945; process, and on the &lt;sup&gt;12&lt;/sup&gt;C(&amp;#945;, &amp;#947;)&lt;sup&gt;16&lt;/sup&gt;O and &lt;sup&gt;3&lt;/sup&gt;He(&amp;#945;, &amp;#947; )&lt;sup&gt;7&lt;/sup&gt;Be reactions are discussed. (author)"/>

В настоящее время, когда я применяю XSLT, вывод будет следующим:

Мы представляем различные модели, используемые в ядерной астрофизике. В частности, подчеркивается роль микроскопических кластерных теорий. Недавние заявки на процесс с тройным α и на 12 C (α, γ) 16 O и 3 He (α, γ) 7 Ве реакции обсуждаются. (Автор)

Любая помощь приветствуется.

1 Ответ

1 голос
/ 09 сентября 2011

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

Это действительно злая практика. Чтобы иметь возможность обрабатывать строку как разметку - используя XPath и XSLT - разметка должна быть заново составлена ​​из строки. Вам нужно либо выполнить этап предварительной обработки, чтобы проанализировать содержимое атрибута content как новый XmlDocument, либо вы можете вызвать функцию расширения (которую вам нужно написать) в коде XSLT, которая будет анализировать текст и вернуть узел документа.

В XSLT 3.0 / XPath 3.0 будет стандартная функция parse-xml() именно для таких случаев, как этот.

...