IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  SOA и Web-сервисы  >

Использование Ajax c WSRF::Lite

Управление WSRF::Lite WS-Resources с использованием Ajax

developerWorks
На предыдущую страницуСтраница 5 из 12 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Преобразование XML в HTML

Из предыдущего раздела вы узнали, как можно использовать HTTP GET для извлечения ResourcePropertyDocument WS-Resource и HTTP PUT для обновления WS-Resource. Метод HTTP GET возвращает XML-документ без SOAP-элементов. Просматриваемый в Web-браузере XML-документ обычно не выглядит нормально.

Для представления ResourcePropertyDocument в Web-браузере нужно преобразовать его в форму, которую браузер умеет визуализировать - либо HTML, либо Extensible HTML (XHTML). В данном разделе вы узнаете, как преобразовать ResourcePropertyDocument из XML в HTML, используя XSLT.

XSLT

Extensible Stylesheet Language (XSL) - это стандарт W3C (World Wide Web Consortium) для основанного на XML языка таблиц стилей. XSL объединяет три технологии: XSLT, XPath и XSL-FO. XSLT - это язык для преобразования XML-документов, XPath - это язык для навигации в XML-документах, а XSL-FO - это язык для форматирования XML-документов. В данном руководстве будут использоваться XSLT и XPath (мы не используем XSL-FO в этом приложении).

Для преобразования XML-документа в другой формат можно использовать XSLT. В данном случае мы хотим преобразовать XML документа ResourcePropertyDocument в HTML, для того чтобы его можно было отобразить в Web-браузере. XSLT-процессор, встроенный в Web-браузер, генерирует HTML-документ и заполняет его узлами (node) согласно правилам генерирования, определенным как шаблоны в XSLT таблице стилей. Каждый шаблон - это функция, принимающая узлы документа ResourcePropertyDocument в качестве входных данных и генерирующая узлы в HTML-документе, включая элемент root документа.

Шаблоны используют XPath-выражения для определения того, к каким узлам (атрибутам, элементам или тексту) они должны быть применены. Шаблоны могут вызывать другие шаблоны и рекурсивно определять поддерево. Сложность вывода данного шаблона может меняться. Например, шаблон, соответствующий узлу root, генерирует основную часть скелета Web-страницы, тогда как другие шаблоны могут генерировать только элемент или атрибут при соответствии специфическому типу узла input. Как вы увидите, именно так отображается значение ResourceProperties в HTML-элементах. Например, вы отобразите значение счетчика как input в HTML-форме Web-страницы.

Многие современные Web-браузеры поддерживают XSLT. Они проверяют ссылку на XSLT-файл таблицы стилей, встроенную в XML-документ, через инструкцию обработки XML. При нахождении такой ссылки и возможности ее разрешения в существующую XSLT таблицу стилей браузер загружает документ таблицы стилей и применяет его к XML-документу перед отображением. В предыдущем разделе вы видели, что ResourcePropertyDocument, извлеченный при помощи HTTP GET, содержал строку:

<?xml-stylesheet type="text/xsl" href="Counter.xsl"?>

Эта строка является ссылкой на XSLT-файл таблицы стилей. Web-браузер, который может выполнять XSLT-преобразования, загрузит документ Counter.xsl и применит его к ResourcePropertyDocument. Ссылки на дополнительную информацию по XSLT приведены в разделе "Ресурсы".

Теперь поместите wsa:Address URI WS-Resource-счетчика в адресную строку вашего Web-браузера. В HTML-таблице будет отображаться ResourceProperties. Можно проверить, что исходный код страницы (в Firefox выберите View > Page Source) все еще является тем же XML-документом, который извлек curl. Web-браузер автоматически преобразовал XML в HTML.

XSLT и WSRF::Lite

XSLT-файл для WS-Resource сохраняется в том же каталоге, что и Perl-модуль WS-Resource. Например, для основанного на процессе счетчика, XSLT-файл таблицы стилей размещен в каталоге $WSRF_MODULES/modules/WSRF/Counter и называется Counter.xsl. XSLT-файл таблицы стилей должен иметь то же имя, что и Perl-модуль, а также заканчиваться символами .xsl. Когда контейнер WSRF::Lite получает сообщение HTTP GET для WS-Resource, он проверяет, определен ли для этого типа WS-Resource XSLT-файл и автоматически включает ссылку на него в ResourcePropertyDocument. Контейнер включает ссылку, только если XSLT-файл таблицы стилей существует.

Counter.xsl

Откройте XSLT-файл для WS-Resource-счетчика и взгляните на его содержимое. Преобразование определяется в элементе xsl:template, как показано в листинге 7. Элемент xsl:template содержит HTML-элементы, которые должны быть включены для вывода в браузер, например, <h2>Counter ResourceProperties</h2> объявляет заголовок.


Листинг 7. Часть элемента xsl:template из файла Counter.xsl
                    
<xsl:template match="/" xmlns:mmk="http://www.sve.man.ac.uk/Counter"
                        xmlns:wsrp="http://docs.oasis-open.org/wsrf/rp-2"
                        xmlns:wsrl="http://docs.oasis-open.org/wsrf/rl-2">
   <html>
       <head>
           <link rel="stylesheet" href="Counter.css" type="text/css" />
           <script type="text/javascript" src="Counter.js" />
       </head>
       <body onLoad="javascript: return onLoad();">
          <h2>Counter ResourceProperties</h2>
                <form name="prop">
                  <table border="1">
                   <tr>
                     <th align="left">Property</th>
                     <th align="left">Value</th>
                   </tr>
        ..................

Обратите внимание на то, что HTML содержит ссылку на CSS-файл таблицы стилей и JavaScript-сценарий. В следующем разделе вы узнаете больше об этом. Кроме того, обратите внимание на то, что когда загружается тело HTML-файла, активизируется JavaScript-функция.

Попробуйте добавить HTML-элементы или изменить существующие HTML-элементы в xsl:template. Затем перезагрузите страницу в Web-браузере, чтобы увидеть эффект от ваших изменений.

В листинге 8 значение wsrl:CurrentTime извлекается из ResourcePropertyDocument при помощи XPath-выражения select="/wsrp:ResourceProperties/wsrl:CurrentTime" и помещается в HTML-таблицу в сгенерированных выходных данных.


Листинг 8. Использование XPath для извлечения CurrentTime ResourceProperty из ResourcePropertyDocument
                    
......................
<tr>
    <td>wsrl:CurrentTime</td>
    <td id="CurrentTime">
          <xsl:value-of select="/wsrp:ResourceProperties/wsrl:CurrentTime" />
    </td>
</tr>
.......................



В начало


Counter.css

В листинге 7 видно, что ссылка была включена для CSS-файла. CSS используется для определения того, как отображать HTML-элементы. Например, можно использовать CSS-файл для установки цвета фона всех ячеек таблицы на Web-странице. Используя CSS, вы можете определить общий внешний вид для набора Web-страниц путем создания одной таблицы стилей. После этого изменение способа представления набора Web-страниц потребует изменения только этой таблицы стилей. Ссылки на дополнительную информацию по CSS приведены в разделе "Ресурсы".

WSRF::Lite позволяет включить CSS-файл для конкретного типа WS-Resource. Файл должен находиться в том же каталоге, что и модуль WS-Resource, а также должен иметь то же имя, что и Perl-модуль WS-Resource, но с расширением .css. Откройте файл Counter.css в каталоге $WSRF_MODULES/modules/WSRF/Counter и взгляните на его содержимое, показанное ниже.


Листинг 9. Фрагменты из Counter.css
                    
......................
.modifiable {
        background-color: #9acd32;
}       
        
.idle { 
        background-color: silver;
}

.active {
        background-color: red;
}       
.......................

Counter.css определяет цвет фона для определенных HTML-элементов. В листинге 10 показано, как этот CSS-файл используется с HTML.


Листинг 10. Фрагменты из Counter.xsl
                    
......................
<tr>
   <td class="modifiable">count</td>
   <td class="modifiable">
       <input id="count" type="text" size="20">
         <xsl:attribute name="value">
            <xsl:value-of select="/wsrp:ResourceProperties/mmk:count" />
         </xsl:attribute>
         <xsl:attribute name="onkeypress">javascript: 
              if ((event.which &amp;&amp; event.which == 13) 
                  || (event.keyCode &amp;&amp; event.keyCode == 13)) 
              { return updateResourcePropertiesFromPage(); }
         </xsl:attribute>
       </input>
   </td>
</tr>
.......................

В листинге 10 показано, как формируется запись в HTML-таблице для значения счетчика. Строка таблицы имеет две ячейки, первая из которых содержит строку "count". CSS-класс modifiable управляет способом отображения этого элемента; этот класс (см. листинг 9) показывает, что цвет ячейки должен быть равен #9acd32. Измените какое-то значение цвета в CSS-файле таблицы стилей и перезагрузите Web-страницу, чтобы увидеть эффект от этих изменений.

Вторая ячейка в строке таблицы содержит действительное значение счетчика, которое извлекается из документа ResourcePropertyDocument с использованием XPath. Поскольку вы хотите, чтобы пользователь браузера мог изменять это значение, необходимо поместить его в HTML-форму. XSLT используется для добавления двух атрибутов в элемент input HTML-формы: один называется value и содержит значение счетчика, а второй содержит JavaScript-код. Этот JavaScript-код выполняется при вводе пользователем текста в поле input; он вызывает метод updateResourcePropertiesFromPage(), когда пользователь нажимает Enter, то есть когда код клавиши равен 13 (event.which и event.keyCode - это два способа проверки кода в Firefox и Internet Explorer, соответственно).



В начало



На предыдущую страницуСтраница 5 из 12 На предыдущую страницу

    IBM в России Конфиденциальность Контакты