Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Попенкова.docx
Скачиваний:
28
Добавлен:
01.05.2015
Размер:
1.02 Mб
Скачать

7.3 Методические указания к выполнению лабораторной работы

Visual Basic for Application (VBA) - объектно-ориентированный язык программирования высокого уровня, являющийся одним из диалек­тов очень популярного языка программирования Visual Basic. Программы, написанные на этом языке, понимаемы разными приложениями Microsoft Office, такими, как Word, Excel, Access, PowerPoint, Project и другими. На этом языке программируются офисные приложения.

Пояснения по выполнению рабочего задания.

Макрос - это запрограммированная последовательность действий, команд. Можно запускать макрос сколько угодно раз, заставляя программу выполнять последовательность нужных вам действий.

Макросы в VBA можно писать 2 способами:

1. макрорекордером;

2. с помощью редактора VBA.

Объекты VBA - это кнопки, элементы меню, документы, статистические данные, фрагменты документа, символы, интервалы, рабочая область и даже сам документ. Почти все то, что можно увидеть на экране работающего приложе­ния является объектом

VBA работает в режимах включения\отключения. В режиме конструктора элементы строятся и программируются, а в режиме отключенного конструктора функционируют (выполняются).

7.4 Список контрольных вопросов

1. Что такое макрос?

2. Назовите два способа создания макроса.

3. Какой самый простой способ создать макрос?

4. Как можно отредактировать записанный макрос?

5. Какая лента дает возможность не только запускать макросы, но и управлять ими, изменять и удалять?

6. Какой язык используется для записи макросов?

7. Как создать кнопку на панели инструментов?

8. Как создать кнопку на листе?

9. Как можно и с какими параметрами с помощью макроса закрыть приложение (для Word, Excel)?

10. Что такое MsgBox и InputBox и как ими пользоваться?

Лабораторная работа №8. XML

8.1 Цель работы: изучение основ расширяемого языка разметки; приобретение базовых понятий и способов реализации XML и HTML.

8.2 Рабочее задание:

Представить в виде XML генеалогическое древо своей семьи (по 2 линиям – отцовской и материнской). Если данных не хватает – заполнить произвольной информацией до 7-го колена.

8.3 Методические указания к выполнению лабораторной работы

XML (англ. eXtensible Markup Language - расширяемый язык разметки; произносится [экс-эм-э́л]) - рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. Существуют реляционные и иерархические базы данных. Пример реляционной базы – файл Access. А XML – пример иерархической структуры.

Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов.

XML похож на HTML, но он был создан для описания данных, и в XML теги не определены жестко - вы можете придумать свои собственные теги. XML для описания данных составляется в соответствии с Определением Типа Документа (ОТД) или в соответствии с XML-Схемой.

XML и HTML преследуют различные цели:

 XML (язык описания данных) создан для описания данных, концентрируя свое внимание на самих данных.

 HTML (язык разметки данных) был создан для показа данных, концентрируя внимание на том, как данные будут отображаться.

 HTML заботится об отображении информации для человека, тогда как XML заботится о сущности информации.

XML - это не замена языку HTML. На плечи XML ложится задача описания данных, тогда как HTML используется для представления этих данных. В сети XML играет очень важную роль, и что подобно языку HTML, ставшему фундаментом для всемирной паутины, XML - наиболее распространенное средство для обработки и передачи данных.

Для того чтобы работать далее необходимо располагать как минимум браузером Internet Explorer версии 5.0 и выше.

XML не предназначен для осуществления каких-либо действий. Он создан для хранения информации.

Жанна отставила Ильдару записку. Посмотрим, как можно записать её в XML-виде:

<записка>

<кому>Ильдар</кому>

<от_кого> Жанна </от_кого>

<заголовок>Внимание!</заголовок>

<содержание>Не забудь покормить пираний!</содержание>

</записка>

В записке есть заголовок и содержание (смысловая часть) этой записки. В ней также есть информация о том, кому и от кого поступила эта записка. Но тем не менее, этот XML-документ не выполняет никаких действий. Это всего лишь информация, заключенная в XML-теги. Например, для такого формата записки кто-нибудь может написать программу, которая будет составлять и посылать подобные записки.

Теги, которые используются в примере (напр. <кому> и <от_кого>), нигде в XML стандарте не описаны. Эти теги придумал автор этого примера.

Когда вы используете HTML для отображения данных в браузере, ваши данные содержатся внутри вашего HTML-документа. Используя XML, вы можете хранить свои данные в отдельных XML-документах.

XML-данные могут храниться внутри HTML-страниц как «островки данных». В этом случае вы по-прежнему можете использовать HTML только для форматирования и отображения данных.

В настоящее время компьютеры и базы данных хранят информацию в самых разнообразных и несовместимых форматах. Обмен данными между несовместимыми системами - это одна из наиболее неприятных и долгих процедур для разработчиков. Преобразование данных в XML-формат позволит упростить эту задачу и сделает данные доступными для самых различных типов программ.

С помощью XML обычные текстовые файлы (txt) можно использовать для публикации данных. Тот факт, что данные хранятся в обычных текстовых файлах, позволяет технологии XML использовать программно и аппаратно независимые решения для публикации данных. Это сильно упрощает процесс создания баз данных, поскольку с XML могут работать самые различные программы. Также упрощаются и становятся легче важные процессы развития: обновления операционных систем, серверов, программ и браузеров.

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

XML - это родитель WAP и WML. Язык WML, созданный как HTML для мобильных устройств, имеет в своей основе XML синтаксис.

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

Синтаксис XML. Синтаксические правила языка XML однозначны и очень просты. Эти правила легко выучить и легко использовать. Именно по этой причине упрощается разработка программ, способных читать и обрабатывать XML. В XML используется самоопределяющийся и простой синтаксис.

Пример XML-документа:

<?xml version="1.0" encoding="Windows-1251"?>

<note>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body>Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

Первая строка информирует браузер о том, что файл имеет формат XML. Атрибут version является обязательным. Атрибут encoding не является обязательным, но если у вас в тексте есть русские буквы, то необходимо вставить этот атрибут, в противном случае XML-файл просто не будет обрабатываться, - вы получите сообщение об ошибке.

Следующие строки - это тело XML-файла. Оно состоит из элементов, которые в совокупности образуют древовидную структуру. Элементы идентифицируются тегами и могут быть вложены друг в друга. Следующая строка описывает корневой элемент документа. Это все равно, что сказать: «этот документ - записка (note)»

Следующие 4 строки описывают 4 дочерних элемента к записке (note): кому (to), от кого (from), заголовок (heading), содержание (body).

Последняя строка указывает на завершение корневого элемента.

Можете ли вы без объяснений понять, что этот пример содержит записку от Жании Алмасу? Язык XML - это великолепный пример самоопределяющегося языка.

Все элементы XML должны иметь закрывающий тег. Составляя XML документ, вы не можете опускать закрывающие теги. В HTML многие элементы могут не иметь закрывающего тега. Следующий пример будет правильным с точки зрения HTML:

<p>Это параграф

<p>А это другой параграф

Но вот в XML все элементы должны иметь закрывающий тег:

<p>Это параграф</p>

<p>А это другой параграф</p>

Вы могли заметить, что в предыдущем примере объявление типа документа не имеет закрывающий тег. Это не ошибка. Объявление - это не элемент XML документа, а некий особый элемент, который не должен иметь закрывающего тега.

В отличие от HTML, теги в XML чувствительны к регистру. В XML документе тег <Letter> это не то же самое, что тег <letter>. Открывающий и закрывающий теги должны быть написаны одинаково с учетом регистра:

<Message>Это неправильно!</message> - неверный пример;

<message>А это правильно</message> - верный пример.

В XML элементы должны быть строго вложенными. Нестрого вложенные элементы можно позволить себе в HTML (но и это будет ошибкой):

<b><i>Этот текст печатается жирным курсивом</b></i>.

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

<b><i>Этот текст печатается жирным курсивом</i></b>.

Все XML документы должны иметь корневой элемент. Все XML документы должны содержать единственную пару тегов, определяющую корневой элемент. Все остальные элементы должны быть потомками этого корневого элемента. Любой элемент может иметь свой дочерний элемент. Дочерние элементы должны быть строго вложены в родительский элемент:

<root>

<child>

<subchild>………</subchild>

</child>

</root>

В этом примере: root - корень, child - потомок, subchild - потомок потомка.

Значения атрибутов должны быть в кавычках. В XML считается ошибкой, если вы напишите значение параметра, не заключив его в кавычки. XML элементы могут иметь атрибуты, которые идут парой «название атрибута/значение атрибута» совсем, как в HTML. В XML значения атрибутов должны записываться в кавычках. Сравните следующие два примера, но учтите, что первый - это неправильный пример, а второй – правильный:

<?xml version="1.0" encoding="Windows-1251"?>

<note date=12/11/22002>

<to>Алмас</to>

<from>Жания</from>

</note>

<?xml version="1.0" encoding="Windows-1251"?>

<note date="12/11/22002">

<to>Алмас</to>

<from>Жания</from>

</note>

В 1-м примере есть ошибка: значение параметра date записано не в кавычках. Правильно: date="12/11/22002". Неправильно: date=12/11/22002.

В XML все подряд идущие пробелы не сокращаются до одного, а воспринимаются как есть. В HTML была другая ситуация - если вы в HTML, напишите:

Привет, меня зовут Алмас

то это предложение отобразится как

«Привет, меня зовут Алмас»

потому что HTML подряд идущие пробелы, табуляции, переводы строки превращал в один единственный пробел.

В XML новая строка всегда обозначается как LF. После того, как вы напечатаете одну строку на печатной машинке, вы должны вручную вернуть каретку в крайнее левое положение и, опять же вручную, провернуть бумагу к следующей строке. А в Windows-приложениях новая строка обычно записывается как пара специальных символов: возврат каретки (CR - carriage return) и перевод строки (LF - line feed). Эта пара спецсимволов подобна действиям при печати на печатной машинке, в случае когда вы переходите на следующую строку. В Unix-приложениях новая строка обычно обозначается только символом LF. Mac-приложения обычно используют CR символ для обозначения новой строки.

Синтаксис для записи комментариев в XML такой же, как и в HTML:

<!-- Это комментарий -->

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

Элементы XML расширяемы и взаимосвязаны. Они имеют простые правила именования.

Элементы XML расширяемы. XML элементы могут быть расширены, чтобы хранить больше информации. Посмотрите на пример записки в формате XML:

<note>

<date>2002–08–01</date>

<to>Алмас</to>

<from>Жания</from>

<body> Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

Давайте представим, что мы сделали программу, которая анализирует XML-файл, изымает из него данные, содержащиеся в тегах <to>, <from> и <body>, и представляет эту информацию в виде:

Сообщение

Кому: Алмас

От кого: Жания

Не забудь про планы на выходные - рыбалка на Или!

Представим, что автор XML-документа добавил в него некоторую уточняющую информацию:

<note>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body> Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

Что тогда произойдет с программой? Её переписывать не надо, так как при анализе XML-файла программа будет искать содержимое тегов <to>, <from>, и <body> и она, по- прежнему будет выводить на экран такое же напоминание. В этом и есть суть того, что называется расширяемостью языка XML.

XML элементы взаимосвязаны. Элементы имеют родственные наследственные связи. Для понимания XML-терминологии вы должны знать, как называются отношения между XML-элементами и как описывается содержание XML-элементов. Например, у нас есть описание книги:

XML с нуля

Введение в XML

* Что такое HTML

* Что такое XML

Синтакс XML

* Элементы должны иметь закрывающий тег

* Элементы должны быть строго вложенными

А теперь представим, что XML документ описывает эту книгу:

<book>

<title>XML с нуля</title>

<prod id="33–657" media="paper"></prod>

<chapter>Введение в XML

<para>Что такое HTML</para>

<para>Что такое XML</para>

</chapter>

<chapter>Синтакс XML

<para>Элементы должны иметь закрывающий тег</para>

<para>Элементы должны быть строго вложенными</para>

</chapter>

</book>

Book (книга) - это корневой элемент. Title, prod, и chapter - потомки элемента book. Book - родитель для title, prod и chapter. Title, prod, и chapter - это родственники (сестринские элементы), поскольку у них общий родитель.

Содержимое элементов делится на несколько типов. XML-элемент начинается с открывающего тега (включая сам тег) и заканчивается закрывающим тегом (включая закрывающий тег). Элемент может иметь элементное содержимое, смешанное содержимое, простое содержимое или пустое содержимое. У элемента также могут быть атрибуты. В предыдущем примере book имеет >элементное содержимое, потому что содержит другие элементы. Chapter имеет смешанное содержимое, поскольку содержит как текст, так и другие элементы. Para имеет простое содержимое, поскольку в нем содержится только текст. Prod имеет пустое содержимое, поскольку внутри тегов его конструкции ничего нет. В этом же примере у элемента prod есть атрибуты. Атрибут называется id и имеет значение 33–657. Атрибут, названный media, имеет значение paper.

В XML элементы должны именоваться в соответствии со следующими правилами:

 Имена могут состоять из букв цифр и других символов;

 Имена не могут начинаться с цифры или знака препинания;

 Имена не должны начинаться со последовательности xml (или XML, или Xml и т. д.);

 Имена не могут содержать пробелов.

Когда вы придумываете имена своим XML-элементам, придерживайтесь следующих простых правил: для имен нет ограничений, и у вас есть полная свобода, но важно, чтобы ваши имена элементов было легко понять. Имена с символом подчеркивания в качестве разделителя - это хороший стиль. Например: <first_name>, <last_name>. Избегайте использования символов «-» и «.» в именах. Например, если элементу вы дали название «first-name», вполне вероятна ошибка, что часть программ попытается от first вычесть name. В случае, если же вы назвали элемент «first.name», некоторые программы могут воспринять это имя как «параметр name элемента first».

Длина имени не ограничена, но этим не следует злоупотреблять. Имена должны быть короктими и простыми, как <book_title>, а не как <the_title_of_the_book>.

XML документы часто привязаны к какой-либо существующей базе данных, в которой элементы базы соответствуют элементам XML-документа. Хорошим тоном считается давать имена XML-элементам в соответствии с именами, существующими в базе данных. В спецификации XML разрешается использовать кириллицу для имен элементов, но лучше избегать этого, поскольку различное ПО может неправильно обрабатывать документы, имена в которых написаны не английским алфавитом.

В именах не следует использовать символ «:», поскольку он зарезервирован для пространств имен.

Атрибуты XML. XML-элементы могут иметь атрибуты, наподобие атрибутов в HTML. Атрибуты предназначены для указания дополнительной информации об элементе.

В HTML можно написать <IMG SRC="computer.gif">. Атрибут SRC предоставляет дополнительную информацию о IMG элементе. В HTML (и в XML) атрибуты предоставляют дополнительную информацию об элементах:

<img src="computer.gif"> <a href="demo.asp">

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

<file type="gif">computer.gif</file>

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

<person sex="female">

или так:

<person sex='female'>

Если в значении атрибута есть двойные кавычки, то это значение должно быть записано внутри одинарных кавычек:

<gangster name='George "Shotgun" Ziegler'>

Если в значении атрибута есть одинарные кавычки, то это значение должно быть записано внутри двойных кавычек:

<gangster name="George 'Shotgun' Ziegler">

Данные можно хранить в атрибутах или в дочерних элементах. Взгляните на следующие примеры:

<person sex="female">

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person> <person>

<sex>female</sex>

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

В первом примере пол (sex) записан как атрибут, а вот во втором примере пол - это дочерний элемент. Оба примера содержат одинаковую информацию. Нет никаких строгих правил, указывающих, где следует использовать атрибут, а где - дочерний элемент. Тем не менее, лучше забыть о том, в каких случаях используются атрибуты в HMTL. Для хранения всего, что ближе к данным, чем к служебной информации, используются дочерние элементы.

Лучше хранить данные в дочерних элементах. Три нижеприведенных элемента содержат одинаковую информацию:

В первом для хранения даты используется атрибут:

<note date="12/11/2002">

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body> Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

Во втором примере значение даты записано в специальном элементе:

<note>

<date>12/11/2002</date>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body> Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

В третьем примере дата записана в расширенном (и более гибком) элементе:

<note>

<date>

<day>12</day>

<month>11</month>

<year>2002</year>

</date>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body> Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

С использованием атрибутов связаны некоторые проблемы:

 атрибуты не могут содержать больше 1 значения (дочерние элементы могут);

 атрибуты тяжело расширяются (в случае каких-либо изменений);

 структуры нельзя описать атрибутами (а дочерними элементами можно);

 программам тяжело работать с атрибутами;

 атрибуты нелегко проконтролировать на соответствие единому ОТД - определению типа документа, устанавливающему валидность документа.

Если вы используете атрибуты для хранения данных, то учтите, что ваши документы сложны для чтения и записи. Старайтесь использовать элементы для хранения данных. А атрибуты используйте, только чтобы указать информацию, не имеющую отношение к данным.

Пример того, как не стоит писать XML-документ:

<note day="12" month="11" year="2002"

to="Алмас" from="Жания" heading="Напоминание"

body=" Не забудь про планы на выходные - рыбалка на Или!">

</note>

У правил всегда есть исключения. Правило для атрибутов имеет 1 исключение: иногда мы назначаем идентификаторы (id) элементам. Эти идентификаторы используются для доступа к определенным XML-элементам, подобно тому, как это делается в HTML атрибутами NAME или ID. Вот пример, описывающий применение идентификаторов:

<messages>

<note id="p501">

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body>Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

<note id="p502">

<to>Жания</to>

<from>Алмас</from>

<heading>Re: Напоминание</heading>

<body>Не забуду!</body>

</note>

</messages>

В этом примере идентификатор играет всего лишь роль счетчика и позволяет ориентироваться среди различных записок в XML-файле. При всем при этом, идентификаторы не являются частью данных.

Смысл сказанного в том, что метаданные (данные о данных) должны храниться в атрибутах, в то время как данные должны храниться в элементах.

XML валидация. XML-документ с правильным синтаксисом - это правильный документ. XML документ, соответствующей определенному ОТД, - это валидный XML-документ.

«Правильные» ("well formed") XML-документы составлены согласно XML синтаксису. «Правильный» XML-документ - это документ, составленный согласно правилам языка XML, которые были перечислены выше:

<?xml version="1.0" encoding="Windows-1251"?>

<note>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body>Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

XML-документ, который также соответствует какому-либо ОТД называется валидным. Валидный ("valid") XML документ - это «правильный» документ, который также соответствует определенным правилам некоторого ОТД (определения типа документа, DTD, document type definition):

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE note SYSTEM "InternalNote.dtd"><note>

<to>Алмас</to>

<from>Жания</from>

<heading>Напоминание</heading>

<body>Не забудь про планы на выходные - рыбалка на Или!</body>

</note>

XML ОТД. ОТД определяет элементы, которые можно использовать в XML- документе. Цель ОТД - обозначить правила взаимного расположения элементов и конструкций в вашем типе XML документа. ОТД определяет структуру XML документа и набор используемых элементов (т. е. их названий). Более подробно об ОТД и валидации вы можете прочитать в руководстве ОТД.

XML-схема. XML-схема - это альтернатива использованию ОТД, основанная на синтаксисе XML языка. Консорциум W3 поддерживает также и другой способ валидации, названный XML-схемой. Более подробно об XML схеме вы можете прочитать в соответствующем руководстве.

Ошибки в XML-документе должны приводить к прекращению обработки XML-документа. Спецификация языка XML указывает на то, что программы должны остановить обработку XML-документа, если найдут в нем синтаксические ошибки. Такое правило вводится для того, чтобы упростить написание программ, читающих XML, а также для того, чтобы сделать XML-документы совместимыми. В HTML вы могли себе позволить написать страничку с кучей ошибок (забыть закрыть некоторые теги). Основная причина громоздкости и несовместимости работы веб-браузеров как раз в том, что каждый из браузеров имеет свое мнение на то, как надо вести себя при встрече ошибок. В случае XML такого быть не должно.