Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
-4
22:35, 08 августа 2011

Шаблон для XSLT — структура исходного XML для страницы (шаблона)

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

Решил изобрести ещё один велосипед. :)

Но это не совсем изобретение велосипеда, потому что за основу взята тщательно продуманная структура класса aspx-страницы из библиотеки .NET.

Понятно, что это класс Page, в пространстве имен System.Web.UI.Но, т.к. я использую XSLT-шаблонизатор в среде ASP.NET MVC, то я включил некоторые свойства из класса ViewPage (System.Web.MVC).

В общем, минимальная реализация XML-структуры этого класса у меня выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
<Page>
  <!-- Свойство, используемое для более удобного доступа к модели (свойство System.Web.Mvc.ViewDataDictionary). -->
  <Model>
    <!-- Сюда помещается сериализованная модель, возвращаемая инфраструктурой ASP.NET MVC. -->
  </Model>
  <!-- Идентификатор языка и региональных параметров. -->
  <Culture>ru-ru</Culture>
  <!-- HTTP-значения, отправленные клиентом во время веб-запроса. -->
  <Request>
    <!-- Если проверка подлинности для запроса выполнена, значение True, в противном случае — False. -->
    <IsAuthenticated>False</IsAuthenticated>
    <!-- Виртуальный путь текущего запроса. -->
    <Path>/about/</Path>
    <!-- Строка, представляющая тип вызова HTTP (GET или POST), отправленного клиентом. -->
    <RequestType>GET</RequestType>
    <!-- URL-адрес текущего запроса. -->
    <Url>http://localhost/about/</Url>
    <!-- Начальная строка пользовательского агента для клиентского обозревателя. -->
    <UserAgent>Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18</UserAgent>
    <!-- IP-адрес узла удаленного клиента. -->
    <UserHostAddress>127.0.0.1</UserHostAddress>
    <!-- DNS-имя удаленного клиента. -->
    <UserHostName>127.0.0.1</UserHostName>
  </Request>
  <!-- Представляет пользователя, производящего запрос страницы.-->
  <User>
    <!-- True, если пользователь прошел проверку подлинности; в противном случае — False. -->
    <IsAuthenticated>False</IsAuthenticated>
    <!-- Имя пользователя. -->
    <Name></Name>
  </User>
  <!-- Данные для представления. -->
  <ViewData>
    <!-- Сюда помещаются сериализованные данные для представления, возвращаемые инфраструктурой ASP.NET (ViewDataDictionary). -->
  </ViewData>
</Page>

* This source code was highlighted with Source Code Highlighter.

Описания к тегам, напрямую взяты из описания методов и свойств класса Page, которые можно просмотреть в обозревателе объектов (среда Visual Studio).

Далее, заполняем все необходимые значения тегов, используя контекст запроса, базу данных и можно выполнять XSLT-трансформацию.

Для заголовка и пр. деталей страницы, можно просто добавить соотвествующие теги (<title></title> и пр.).

-4
348
1