Как обрабатывать HTML entity nbsp в XSLT. Без изменения входного файла
Я пытаюсь преобразовать HTML-файл в XML-файл с помощью XSLT (используя Oxygen 9.0 для преобразования).
Когда я настраиваю и запускаю преобразование XSLT с HTML-файлом, то Oxygen выводит
The entity 'nbsp' was referenced,but not declared.
Мой входной html-файл:
<div><span> some text</span></div>
Примечание: я хочу знать, как обрабатывать эту сущность только с помощью XSLT, я не хочу вносить какие-либо изменения во входной файл.
2 ответов:
Вы можете использовать XML-сущности для создания XML-файла, который определяет сущность
Например, предположим, что ваш фрагмент сохранен в виде файла с именем: "недопустимо.xml "nbspи включает (сломанный) фрагмент XML.<div><span> some text</span></div>Создайте XML-файл следующим образом:
<!DOCTYPE wrapper [ <!ENTITY nbsp " "> <!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>).
Насколько мне известно, вам потребуется внести изменения во входной файл.
Либо изменив ваш
на , либо объявив пользовательский doctype, который будет выполнять преобразование для вас:<!DOCTYPE doctypeName [ <!ENTITY nbsp " "> ]>Это потому, что
не является одним из предопределенных объектов XML.
Comments