Как обрабатывать HTML entity nbsp в XSLT. Без изменения входного файла



Я пытаюсь преобразовать HTML-файл в XML-файл с помощью XSLT (используя Oxygen 9.0 для преобразования).



Когда я настраиваю и запускаю преобразование XSLT с HTML-файлом, то Oxygen выводит



The entity 'nbsp' was referenced,but not declared.



Мой входной html-файл:



<div><span>&nbsp;some text</span></div>


Примечание: я хочу знать, как обрабатывать эту сущность только с помощью XSLT, я не хочу вносить какие-либо изменения во входной файл.

609   2  

2 ответов:

Вы можете использовать XML-сущности для создания XML-файла, который определяет сущность nbsp и включает (сломанный) фрагмент XML.

Например, предположим, что ваш фрагмент сохранен в виде файла с именем: "недопустимо.xml "
<div><span>&nbsp;some text</span></div>

Создайте XML-файл следующим образом:

<!DOCTYPE wrapper [
   <!ENTITY nbsp "&#160;">
   <!ENTITY invalid-xml-document SYSTEM "./invalid.xml">
]><wrapper>
&invalid-xml-document;</wrapper>

Когда этот файл будет проанализирован, он определит сущность nbsp, включающую содержимое из "недопустимого".xml", и правильно разрешить сущность nbsp. В результате получается это:

<wrapper>
  <div>
    <span> some text</span> 
  </div>
</wrapper>

Затем просто настройте XSLT для размещения нового элемента документа (в данном примере элемент <wrapper>).

Насколько мне известно, вам потребуется внести изменения во входной файл.

Либо изменив ваш &nbsp; на &#160; , либо объявив пользовательский doctype, который будет выполнять преобразование для вас:

<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]> 

Это потому, что &nbsp; не является одним из предопределенных объектов XML.

Comments

    Ничего не найдено.