Как обрабатывать сущность HTML в XSLT. Без изменения входного файла - PullRequest
4 голосов
/ 03 февраля 2012

Я пытаюсь преобразовать 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, я не хочу внести какие-либо изменения во входной файл.

Ответы [ 2 ]

7 голосов
/ 03 февраля 2012

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

Например, предположим, что ваш фрагментсохраняется как файл с именем: " invalid.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, включит содержимое из "invalid.xml" и правильно разрешит сущность nbsp.В результате получается следующее:

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

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

7 голосов
/ 03 февраля 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...