Использование XML-анализатора для создания XHTML-кода на лету

StackOverflow https://stackoverflow.com/questions/447659

Вопрос

Разрабатывая серверный код, я наконец-то разглядел Крест-накрест, пытаясь написать - а затем, конечно, понять - формы или другой html-код, в котором текстовые строки (атрибуты) в двойных кавычках должны встречаться в помеченной строке (разметке), открывающейся и закрывающейся должным образом;но часто необходимо создавать экземпляры текста javascript в apostophes, довольно часто цитируя другой текст (в кавычках, конечно) или создавая экземпляры вычисляемых значений, которые должны быть помещены в зависящую от языка разметку

Это полный беспорядок и главная дорога к слепоте и безумию, а также верный способ потратить свое время на попытки выяснить, почему последняя ячейка в таблице отображается перед заголовком таблицы - конечно, я пропустил апостроф в строке из 512 символов.После попытки изобрести колесо, создав какой-нибудь API для управления неуправляемым, я увидел это возможное решение:ну, проклятый xhtml - это, по сути, XML.Так почему бы не использовать анализатор XMl (на сервере), чтобы создать с нуля фрагмент документа, заполнить его, добавив дочерние узлы по моему желанию, затем заставить анализатор сериализовать все дерево фрагментов, позаботившись о глупых деталях, таких как открывающий и закрывающий тег, добавление апостроф и все другие подобные вещи?Использование его только в бэк-офисе должно поддерживать низкую нагрузку на сервер - лишь немногие люди на этой планете могут проходить аутентификацию и получать доступ к серьезным материалам, поэтому создание и выпуск объектов остаются приемлемыми.

Мой вопрос заключается в следующем:является ли это, по вашему мнению, хорошим решением проблемы, упомянутой выше?Может быть, есть более простые решения, которыми я пренебрегаю?Есть какая-то проблема, которую я не увидел?Является ли это своего рода излишеством?Ироничное "поздравляю, вы наконец-то получили это" принимается.

Спасибо!

Это было полезно?

Решение

Создание DOM динамически на стороне сервера, а затем выгрузка результирующего HTML (или XHTML) - это то, что наиболее серьезный серверные технологии делают это.Возможно, они не делают этого с помощью raw XML - возможно, у них есть своя собственная структура классов / API, которую они используют для этого, но это базовая парадигма, которой они следуют.

Что касается "поздравляю, вы наконец-то получили это", я бы сказал, что вы на правильном пути.Вы не упомянули конкретную технологию, но я бы предположил, что вы возились с созданием необработанного HTML с использованием базового PHP или Perl.Поздравляю, в конце концов, вы сделали то, что делают все мы:интересно, есть ли способ получше.Я бы посоветовал вам изучить некоторые из существующих серьезных фреймворков веб-приложений, таких как ASP.NET MVC, Ruby on Rails, Struts или Twisted.

Другие советы

Да, я использую классы, связанные с XML фреймворка, для анализа XHTML и для создания XHTML.

Я думаю, что ироничное "поздравляю, вы наконец-то получили это" - самый подходящий ответ здесь.XHTML является подмножеством XML, поэтому любые XML-инструменты смогут сделать это должным образом за вас и позволят вам сосредоточиться на содержимом, а не на формате содержимого.

По сути, существует больше анализаторов XML и моделей документов, чем вы можете себе представить.Если у вас нет особых потребностей в производительности и создание пользовательских XML-строк не имеет для вас большего смысла, лучше всего использовать одну из этих библиотек.

Это именно то, для чего был изобретен XSLT:преобразование XML-документов в XML-документы, ничего не портя.Как только вы поймете XSLT (и, к сожалению, это потребует некоторых усилий), проблемы, которые вас сейчас беспокоят, полностью исчезнут из вашей жизни.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top