Как копировать документ DTD во время преобразования XSL?
У меня есть следующий документ DTD в верхней части XML-файла, созданного нашим программным обеспечением для редактирования:
<!DOCTYPE front SYSTEM "file:///M:/Library/AMH-Paed.dtd" [
<!NOTATION cgm PUBLIC "" >
<!-- Begin Document Specific Declarations --><!ENTITY fm.tcont " (Continued)">
<!ENTITY equation1 SYSTEM "equation11.cgm" NDATA cgm>
<!ENTITY equation2 SYSTEM "equation26.cgm" NDATA cgm>
<!ENTITY equation3 SYSTEM "equation32.cgm" NDATA cgm>
<!ENTITY equation4 SYSTEM "equation41.cgm" NDATA cgm>
<!ENTITY equation5 SYSTEM "equation51.cgm" NDATA cgm>
<!ENTITY equation6 SYSTEM "equation62.cgm" NDATA cgm>
<!-- End Document Specific Declarations -->]>
Мы обновляем общий тип документа для нашего контента и, таким образом, преобразуем текущие файлы XML с помощью XSLT.
У нас есть пара сотен документов, но только у нескольких из них есть какие-то конкретные декларации (которые различаются по количеству, имени и стоимости), которые мы должны поддерживать при преобразовании.
Тем не менее, я не могу найти способ поддерживать вышеуказанные объявления сущности посредством преобразования.
Возможно ли это, и как бы вы это сделали?
1 ответ
Декларации DTD не являются частью модели данных, представленной процессору XSLT, поэтому это нельзя сделать напрямую.
Обходной путь должен использовать инструмент Лексева от Эндрю Уэлча. Это преобразует DTD в представление XML в качестве этапа предварительной обработки, а затем выполняет обратное действие в качестве этапа последующей обработки.