Программирование в IIS

       

Интеграция XML и XSL


Класс clsChair поддерживает обобщение логики представления. Функция GetChairState создает упорядоченную версию объекта "стул" потребителю, осуществляющему построение страницы. Как правило, веб-приложения COM используют ASP-страницу для анализа представления HTML, реализации классов и упрощения прорисовки страницы посредством связывания XML-объектов с документами XML, необходимыми для построения страницы. В ситуации COM – ASP – XSL (или XSLT) можно создать многозвенное приложение, обобщающее типы логики и технологии, приведенные в таблице 1.1.

Таблица 1.1. Звенья и технологии в веб-приложении COM

Название звенаПоддерживаемая технология
Логика представленияЛист XSL или XSLT
Бизнес-логикаVB COM и ASP.
Логика доступа к даннымADO
Логика данныхSQL Server

Страница ASP является уникальной частью программного решения, поскольку объединяет бизнес-логику и логику представления. В программном решении, представленном выше, ASP не была чистым обобщением бизнес-звена или звена представления, поскольку содержала аспекты каждого из них. В листинге 1.14 приведен исходный код страницы-диспетчера ASP, использовавшейся с clsChair. XMLCOMChair.asp не содержит кода HTML, вся страница отображается на листе XSL. Независимо от способа отображения данных из clsChair в браузере, ASP не требует внесения изменений. ASP должна иметь сведения об интерфейсе класса clsChair, поэтому в код включена бизнес-логика. Если в класс clsChair добавляются новые функции или свойства, то нужно отредактировать код ASP. ASP легко параметризуется в соответствии с настраиваемой системой запуска классов, полностью абстрагируясь от бизнес-логики и логики представления.

Листинг 1.14. Source Code for XMLCOMChair.asp object dispatcher (html, txt)

После выполнения экземпляром класса clsChair своей бизнес-логики состояние clsClass преобразуется в XML и используется для построения страницы HTML. Имя листа XSL – formatChair.xsl – хранится в коде ASP, но его можно получить другим способом, например, с помощью аргументов HTTP в представлениях форм или ссылках.
Подпрограмма Drawpage при помощи строкового аргумента, содержащего XML, прорисовывает конечную веб-страницу. Лист XSL определяет способ построения веб-страницы и отображение значений в XML. В XSL можно расположить и другие данные, например, сценарии JavaScript, предназначенные для выполнения в браузере. В листинге 1.15 приведен код листа XSL formatChair.xsl.

Листинг 1.15. Source code for formatChair.xsl (html, txt)

При XSL-программировании следует иметь в виду несколько важных моментов. Любой файл XSL должен быть правильно сформирован, т.е. соответствовать стандартам XML, принятым Консорциумом WWW (W3C). Ошибки в формировании файлов, как правило, вызываются следующими проблемами в коде XML.

  • Теги элементов не соответствуют друг другу. Убедитесь, что в коде используются соответствующие друг другу начальные и конечные теги (включая теги HTML).
  • Несоответствующее расстояние между символами. Необходимо соблюдать правильное количество пробелов между отдельными частями элементов. Лишний пробел между символами "/" и ">" становится причиной некорректного формирования XML.
  • Присутствие специальных символов. Значения элементов и атрибутов не должны содержать специальных символов. Обратитесь к инструкции "Специальные символы в коде XML" для получения более подробной информации.


Редакторы XML позволяют обнаружить больше ошибок при формировании XML. Пользуйтесь редактором XML для упрощения диагностики ошибок в программном решении, использующем XML, или для разработки программного обеспечения, реализующего построение XML. При неправильном формировании документа XML никакая конструкция, требующая этот документ, работать не будет. Существующие на сегодняшний день анализаторы XML не дают подробной информации о причине ошибки, поэтому поиск проблемы может оказаться затруднительным.

Когда программное решение целиком отгружено на сервер, и браузер запрашивает XMLCOMChair.asp, то отображаемая страница должна иметь следующий вид (см. рис. 1.21).


Рис. 1.21.  XMLCOMChair.asp использует clsChair и formatChair.xsl для прорисовки веб-страницы



</xsl:comment>

<xsl:comment> Start the HTML page here </xsl:comment> <HTML> <HEAD> <TITLE>XML COM page</TITLE> </HEAD> <BODY>

<xsl:comment> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ build table for chair data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:comment>

<xsl:for-each select="Chair"> <P>current</P> <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="0"> <TR> <TH>ID</TH> <TH>Color</TH> </TR> <TR> <TD><xsl:value-of select="@ID"/></TD> <TD><xsl:value-of select="@Color"/></TD> </TR> </TABLE> </xsl:for-each>

<xsl:comment> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XSL parts are completed

Please never forget, all HTML must be well formed also. XSL is also case sensitive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:comment>

<P>command </P> <xsl:comment> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ build table for commanding new chair data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:comment>

<FORM METHOD = "POST" ACTION = "XMLCOMChair.asp" ID = "frmImage" NAME = "getInfo" > <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="0"> <TR> <TD>Action</TD> <TD> <input TYPE="text" NAME="Action" VALUE="Open or New"> </input> </TD> </TR> <TR> <TD>ID</TD> <TD><input TYPE="text" NAME="ID" VALUE=""></input></TD> </TR> <TR> <TD>color</TD> <TD> <input TYPE="text" NAME="color" VALUE="puce"> </input> </TD> </TR> </TABLE> <input ID="subFull" NAME="subR" TYPE="submit" VALUE="Go"></input> </FORM>



</BODY> </HTML>

</xsl:template> </xsl:stylesheet>

Листинг 1.15. Source code for formatChair.xsl

При XSL-программировании следует иметь в виду несколько важных моментов. Любой файл XSL должен быть правильно сформирован, т.е. соответствовать стандартам XML, принятым Консорциумом WWW (W3C). Ошибки в формировании файлов, как правило, вызываются следующими проблемами в коде XML.

  • Теги элементов не соответствуют друг другу. Убедитесь, что в коде используются соответствующие друг другу начальные и конечные теги (включая теги HTML).
  • Несоответствующее расстояние между символами. Необходимо соблюдать правильное количество пробелов между отдельными частями элементов. Лишний пробел между символами "/" и ">" становится причиной некорректного формирования XML.
  • Присутствие специальных символов. Значения элементов и атрибутов не должны содержать специальных символов. Обратитесь к инструкции "Специальные символы в коде XML" для получения более подробной информации.


Редакторы XML позволяют обнаружить больше ошибок при формировании XML. Пользуйтесь редактором XML для упрощения диагностики ошибок в программном решении, использующем XML, или для разработки программного обеспечения, реализующего построение XML. При неправильном формировании документа XML никакая конструкция, требующая этот документ, работать не будет. Существующие на сегодняшний день анализаторы XML не дают подробной информации о причине ошибки, поэтому поиск проблемы может оказаться затруднительным.

Когда программное решение целиком отгружено на сервер, и браузер запрашивает XMLCOMChair.asp, то отображаемая страница должна иметь следующий вид (см. рис. 1.21).


Рис. 1.21.  XMLCOMChair.asp использует clsChair и formatChair.xsl для прорисовки веб-страницы


Содержание раздела