Андрей Попов - Windows Script Host для Windows 2000/XP
В В Root.removeChild(Parent);
  //Выводим диалоговое окно с сообщением
  WshShell.Popup("Запись удалена!",0,
   "Работа с XML-файлом",vbInformation+vbOkOnly);
В }
 //Сохраняем содержимое XML-файла на диске
В XMLDoc.save(PathBook);
В }
}
//Построение путей к файлам
function InitPath() {
В BasePath=WshShell.CurrentDirectory+"\";
 //Путь к файлу с данными
В PathBook=BasePath+"book.xml";
}
//Основная запускная функция
function Main() {
В var Res;
 //Создаем объект WshShell
В WshShell = WScript.CreateObject("WScript.Shell");
 //Определяем пути к файлам
В InitPath();
В LastName=InputName();
 //Запрос на удаление записи
 Res=WshShell.Popup("Удалить фамилию "+LastName+
В " РёР· n"+PathBook+"?",0,
 "Работа с XML-файлом",vbQuestion+vbYesNo);
 if (Res==vbYes) { //Нажата кнопка Да
В //Рщем РІ книжке нужную фамилию Рё удаляем относящуюся Рє
 //ней запись
В FindAndDelRecord();
В }
}
/******************* Начало **********************************/
Main();
/************* Конец *********************************************/
</script>В
</job>
Глава 7
РЎРїРѕСЃРѕР±С‹ организации диалогового режима работы сценариевВ
В этой главе на примере работы с записной книжкой будут рассмотрены три способа организации из сценария диалога с пользователем.
Во-первых, мы еще раз подробно остановимся на том, как можно использовать параметры командной строки для запуска различных заданий из многозадачного WS-файла, который в нашем случае будет реализовывать несколько функций для работы с записной книжкой.
Во-вторых, для того же WS-файла мы создадим кнопочное (командное) меню, в котором пользователь сможет выбрать нужное ему действие с помощью ввода определенных символов в диалоговом окне.
Наконец, будет показано, как можно организовать в сценарии полноценный пользовательский интерфейс с помощью HTML-форм и браузера Internet Explorer.
Многозадачный сценарий для работы с записной книжкой
В качестве примера рассмотрим сценарий для работы с записной книжкой в XML-формате (структура файла book.xml, в котором хранится записная книжка, описана в предыдущей главе), в котором будут реализованы следующие функции:
□ просмотр всех записей в алфавитном порядке;
□ поиск записей по фамилии;
□ добавление и удаление записей.
Каждая из этих задач реализуется в виде отдельного задания в файле PhoneBook.wsf (листинг 7.1).
Листинг 7.1. Схема многозадачного файла PhoneBook.wsf<package>
 <!-- ****************** Просмотр всех записей ******************* -->
В <job id="SortName">
 …
В </job>
 <!-- *************** поиск записей по фамилии ************** -->
В <job id="FindName">
 …
В </job>
 <!-- *************** удаление записи по фамилии *************** -->
В <job id="DelRec">
 …
В </job>
 <!-- *************** добавление записи *************** -->
В <job id="AddRec">
  …
В </job>
</package>
Некоторые функции (например, настройка пути к XML-файлу) должны присутствовать во всех заданиях, поэтому такие общие функции мы вынесем в отдельный файл Usage.js, который будет подключаться в каждом из заданий следующим образом:
<script language="JScript" src="Usage.js"/>
В файл Usage.js помещены следующие функции:
□ конструктор объекта Person (одна запись из книжки);
□ функция GetTagVal(obj, tgName), которая возвращает значения тега tgName XML-элемента obj;
□ функция PersonToArray(XNode), которая заполняет поля экземпляра PersonRec объекта Person данными из соответствующих XML-элементов и добавляет сформированную запись в массив PersonArr;
□ функции TopReport(Mess) и BottomReport(Mess), с помощью которых в выходной файл печатается заголовок отчета и итоговая информация соответственно;
□ функция PrintPerson(PersRec), в которой происходит вывод данных из полей объекта PersonRec в выходной файл;
□ функция MakeOut(), которая обеспечивает запуск Блокнота и открывает в нем выходной файл;
□ функция InitPath(), в которой строятся пути к XML-файлу, содержащему данные, и выходному файлу.
Usage.js объявляются глобальные переменные и константы. Полностью содержимое файла Usage.js приведено в листинге 7.2.
Листинг 7.2. Общие функции для работы с записной книжкой/*******************************************************************/
/* РРјСЏ: Usage.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                  */
/* Описание: Общие функции для записной книжки                    */
/*******************************************************************/
//Объявляем переменные
var
В WshShell,FSO,
 BasePath,    //Путь к текущему каталогу
 PathBook,    //Путь к файлу с данными
 PathOut,     //Путь к выходному файлу
 FBook,       //Файл с данными
 FOut,        //Выходной файл
 NomRec=0,    //Счетчик количества записей
 PersonRec,   //Объект для хранения данных об одном человеке
 PersonArr;   //Массив для хранения объектов PersonRec