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




Построение остальных элементов XML


После обработки функции HttpExtensionProc значения заголовка ALL_HTTP остальные серверные переменные обрабатываются с помощью функции GetECBElement (см. листинг 5.7). Каждая серверная переменная, передаваемая в GetECBElement, извлекается с помощью функции GetServerVariable и записывается в элемент XML, присоединяемый к строке, на которую указывает psElement. Указатель psElement указывает на документ XML, конструируемый в HttpExtensionProc.

Листинг 5.7. Function GetECBElement (html, txt)

Функция ValidateValue проверяет, что специальные символы указаны с помощью альтернативных комбинаций символов. Функция применяется к строке, перед тем как строке присваивается статус значения элемента. Для подтверждения значения атрибута можно применять ValidateValue. XML не разрешает использование определенных специальных символов в позиции значения, если они не представлены в альтернативном виде. Как видно из листинга 5.8, символы, используемые для реализации XML-структуры: "=", "?" и "?" – заменяются альтернативными эквивалентами.

Листинг 5.8. Function ValidateValue (html, txt)

Функция FindAndReplace представляет собой утилиту для замещения всех вхождений строки. В расширении ISAPI SEUX она является идеальным механизмом для замещения одной фразы внутри строки другой фразой. Аргументы представляют собой указатели на строки:

  • изменяемая строка (контейнер);
  • строка, которую нужно заменить внутри контейнера (цель);
  • строка, заменяющая цель в контейнере (замещение).

Строка STL содержит функции find и replace, используемые функцией FindAndReplace для поиска контейнера всех вхождений цели (см. листинг 5.9). Каждый раз при обнаружении цели в контейнере происходит ее замена, и начинается новый поиск. По завершении работы функции FindAndReplace контейнер обновляется замещениями, если таковые имеются.

Листинг 5.9.

(html, txt)

Функция GetElement работает аналогично функции GetECBElement; она вызывается из функции HttpExtensionProc для конкатенации элементов из свойств ECB.


Содержание  Назад  Вперед