Преобразование атрибутов в элементы

Добавлено Дата: 7 January, 2011 категория: XSLT

Задача

Имеется документ, в котором информация закодирована в виде атрибутов, а нужно закодировать ее в элементах.

Решение

Эта задача будто специально предназначена для применения идиомы переоп­ределяемого копирования, с которой мы начали эту главу. В примере ниже все ат­рибуты преобразуются в элементы.

Читать »

Генерация кода заглушки обработчика сообщения

Добавлено Дата: 7 January, 2011 категория: XSLT

Задача

Требуется сгенерировать скелет обработчика сообщения.

Решение

Следующая таблица стилей создает простой скелет обработчика. Она прини­мает на входе имя процесса и генерирует код заглушки.

<?xml version="1.0" encoding="UTF-8"?>

Читать »

Нотификации о смене дизайнера

Добавлено Дата: 6 January, 2011 категория: C#, Компоненты

Каждый раз при открытии дизайнера формы Visual Studio создает соответствующий класс дизайнера. При закрытии формы этот объект уничтожается. Кроме того, при переключении между страницами редактора текущий активный дизайнер (active designer) переключается в соответствии с выбранной страницей. Получать уведомления о смене дизайнера позволяет сервис IDesignerEventService, который имеет следующий список свойств и событий:

Читать »

Выполнение обхода в прямом порядке

Добавлено Дата: 6 January, 2011 категория: XSLT

Задача

Требуется рекурсивно обработать сначала сам элемент, а потом его потомков.

Решение

Все решения в этом рецепте имеют такой общий вид:

<xsl:template match="node()">

<!– Сделать что-то с текущим узлом –>

Читать »

Генерация Web-сайтов из тематических карт

Добавлено Дата: 5 January, 2011 категория: XSLT

Задача

Требуется получить знания о предмете, представленном в тематической кар­те, и на этой основе сгенерировать с помощью XSLT Web-сайт.

Решение

В основу решения положен каркас Cogitative Topic Maps Web Site (CTW), представленный публике в сборнике статей XML Topic Maps под редакцией Джека Парка (Jack Park) (Addison Wesley, 2002). Оригинальная работа была выполнена в компании Extreme Markup Languages в 2000 году.

Читать »

Статический поиск

Добавлено Дата: 5 January, 2011 категория: Игры, Теория

в том или ином виде используется во всех программах. Обычно он называется форсированным вариантом, хотя статический поиск может рассматривать не только форсированные ходы. В чем основная идея статического поиска? В процедуре поиска можно для каждого узла получить немедленную статическую оценку. Обычно функцией, вычисляющей эту оценку, является Evaluate. Что такое статическая оценка? Представьте, что фигуры замерли, и ходов больше нет, просто подсчитывается текущее со­стояние. Неважно, что белому королю на следующем ходу поставят мат. Движения нет, и этого функция Evaluate не увидит. Оценка для белых рав­на сумме всех весов и позиционных факторов белых фигур за вычетом всех весов и позиционных факторов черных. Позиционные факторы не опреде­лены однозначно. Есть средние значения для каждой фигуры, могут учиты­ваться структуры пешек, безопасность короля, проходные пешки, близость легких фигур к центру, близость королевы к королю противника и т. д. Нам в данном случае не важен характер позиционной оценки. Важно, что она

Читать »

Преобразование регистра

Добавлено Дата: 4 January, 2011 категория: XSLT

Задача

Требуется преобразовать строку, содержащую символы верхнего регистра, в нижний или наоборот.

Решение XSLT 1.0

Воспользуйтесь функцией translate(). Так, следующий код преобразует заглавные буквы в строчные:

translate($input, ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’, ‘abcdefghijklmnopqrstuvwxyz’)

Читать »

Пустое пространство

Добавлено Дата: 4 January, 2011 категория: XSLT

Задача

Требуется преобразовать XML в форматированный текст, но из-за странностей в обработке символов пропуска все попытки форматирования терпят неудачу.

Решение

Рассмотрим следующий аннотированный пример XML-документа. Символы ( I (новая строка), ^ (табуляция) и ? (пробел) обозначают текстовые узлы, содер­жащие только пустое пространство, на которые часто не обращают внимания, хотя они тоже могут копироваться в выходной документ:

Читать »

Избегайте подводных камней при переносе с XSLT 1.0 на 2.0

Добавлено Дата: 4 January, 2011 категория: XSLT

Задача

Не каждая таблица стилей, созданная для версии 1.0, будет без изменений ра­ботать и в 2.0.

Решение

При переносе таблиц стилей из версии 1.0 в 2.0 нужно помнить о нескольких подводных камнях. Часть из них можно обойти, включив режим совместимости с XSLT 1.0; для этого нужно задать атрибут version="1.0" в элементе stylesheet: <xsl: stylesheet version= " 1. 0 " >. Но уж раз вы начали перенос старых программ в версию 2.0, то есть и другие способы справиться с несовместимостями.

Читать »

Реорганизация иерархии XML

Добавлено Дата: 3 January, 2011 категория: XSLT

Задача

Требуется реорганизовать информацию в XML-документе, так чтобы неявно закодированная информация стала явной и наоборот.

Решение XSLT 1.0

Снова рассмотрим документ SalesBySalesPerson.xml из главы 4:

<salesBySalesperson>

Читать »

Преимущества модели провайдеров

Добавлено Дата: 3 January, 2011 категория: C#, Компоненты

За время развития языков программирования были сделаны разные попытки хранить данные о расположении элементов. В первых версиях Delphi это были dfm-файлы бинарного вида, хранящие информацию времени выполнения, В более поздних версиях появилась возможность хранить такие файлы в текстовом внде. В Visual Basic такая информация хранилась в специальных frm-файлах н т. д.

Читать »

Интерфейс Element

Добавлено Дата: 3 January, 2011 категория: Java, Web, XML

добавляет к методам своего предка Node методы работы с атрибутами открывающего тега элемента XML и методы, позволяющие обратиться к вложенным элементам. Только один метод

public String getTagName () ;

дает сведения о самом элементе, а именно, имя элемента.

Читать »

Виртуальные свойства

Добавлено Дата: 3 January, 2011 категория: C#, Компоненты

В предыдущем разделе мы удаляли свойство из списка свойств. Было бы логично разобраться с тем, как добавлять свойства в этот список, т. е. создавать дополнительные свойства компонента, которые существуют только в режиме разработки. Посмотрите, например, на свойства группы Design (рис. 6.8). Свойства GenerateMember, Locked являются виртуальными. Реально у компонента GradientLabel таких свойств нет.

Читать »

Сокращения глубины поиска

Добавлено Дата: 2 January, 2011 категория: Игры, Теория

Зачем еще и сокращения, когда есть выборочные продления? Не одно ли это и то же? Выборочные сокращения позволяют довольно гармонично на­строить поиск, а продления все равно остаются, и все мирно уживаются друг с другом.

Основная идея сокращения глубины аналогична подрезанию статической оценкой, только вместо немедленного прекращения перебора мы сокраща­ем глубину поиска. Сокращения глубины происходят точно в тех же узлах, что и подрезка при статическом поиске.

Читать »

Поиск стремления

Добавлено Дата: 2 January, 2011 категория: Игры, Теория

(Aspiration search) — еще одна идея ускорения alpha-beta перебора. Из корня дерева перебора функция AlphaBeta вызывается с преде­лами alpha = -infinity, beta = infinity, где infinity — максимально воз­можный результат.

Функция AlphaBeta возвращает оценку лучшего (по ее мнению) хода. Ско­рость счета сильно зависит от alpha-beta пределов. Возникла простая идея: зачем уточнять alpha-beta пределы, когда результат счета в большинстве случаев примерно известен. В качестве параметров функции ALphaBeta рас­сматривается ожидаемый результат и окно стремления. Выглядит, это при­мерно так:

Читать »