ГЛАВА 3
Создание корректно сформированных ХМL-документов



В этой главе вы познакомитесь с основными приемами создания корректно сформированных (well-formed) XML-документов. Корректно сформированным называется документ, отвечающий минимальному набору критериев соответствия для ХМL-документа. Когда вы создаете корректно сформированный XML-докуменг, вы можете добавлять элементы и вводить данные непосредственно в ваш документ, как вы это делаете при создании HTML-документов. (В XML-документе вы можете изобретать свои собственные элементы, а не только пользоваться набором ранее установленных элементов.) Microsoft Internet Explorer 5 может обработать и отобразить любой корректно сформированный XML-документ.

В главе 5 вы узнаете, как создавать валидные (valid) XML-документы: такие документы не только являются корректно сформированными, но и отвечают более строгому набору ограничений. Создать валидный XML-документ сложнее, чем корректно сформированный документ. Прежде чем приступить к добавлению элементов и данных в валидный документ, вы должны полностью определить структуру документа в объявлении типа документа, которое должно содержаться в прологе. Из главы 5 вы узнаете, что в использовании валидных документов есть ряд преимуществ, особенно если создается группа схожих документов.

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

  Составные части корректно сформированного ХМL-документа

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

В Листинге 3-1 представлена полная версия документа для данного примера. (Копия этого листинга содержатся, вд £P-R0M в файле Parts.xml.)

Листинг 3-1

Parts.xml

<?xml version='1.0' standalone='yes' ?> 

<!-- Имя файла: Parts.xml -->

<?xml-stylesheet type="text/css" href="lnventory01 .css"?>

<INVENTORY> 

<BOOK>

<TITLE>The Adventures of Huckleberry Finn</TITLE> 

<AUTHOR>Mark Twain</AUTHOR> 

<BINDING>mass market paperback</BINDING> 

<PAGES>298</PAGES> 

<PRICE>$5.49</PRICE> 

</BOOK> 

<BOOK>

<TITLE>Leaves of Grass</TITLE> 

<AUTHOR>Walt Whitman</AUTHOR> 

<BINDING>hardcover</BIMDING> 

<PAGES>462</PAGES> 

<PRICE>$7.75</PRICE> 

</BOOK> 

<BOOK>

<TITLE>The Legend of Sleepy Ноllow</TITLE> 

<AUTHOR>Washington irving</AUTHOR> 

<BINDING>mass market paperback</BlNDING> 

<PAGES>98</PAGES> 

<PRICE>$2.95</PRICE> 

</BOOK> 

<BOOK>

<TITLE>The Marble Faun</TITLE> 

<AUTHOR>Nathaniel Hawthorne</AUTHOR> 

<BINDING>trade paperback</BINDING> 

<PAGES>473</PAGES> 

<PRICE>$10.95</PRICE> 

</BOOK> 

<BOOK>

<TITLE>Moby-Dick<YTITLE> 

<AUTHOR>Herman Melville</AUTHOR> 

<BINDING>hardcover</BINDING>

<PAGES>724</PAGES>

<PRICE>$9.95</PRICE> 

</BOOK> 

<BOOK>

<TITLE>The Portrait of а Lady</TITLE>

<AUTHOR>Henry James</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>256</PAGES>

<PRICE>$4.95</PRICE> 

</BOOK> 

<BOOK>

<TITLE>The Scarlet Letter</TlTLE>

<AUTHOR>NathanielHawthorne</AUTHOR>

<BINDING>trade paperback</BINDING>

<PAGES>253</PAGES>

<PRICE>$4.25</PRICE> 

</BOOK> 

<BOOK>

<TITLE>The Turn of the Screw</TITLE>

<AUTHOR>Henry James</AUTHOR>

<BINDING>tradepaperback</BINDING>

<PAGES>384</PAGES>

<PRICE>$3.35</PRICE> 

</BOOK> 

</INVENTORY>

<!-- Комментарии, инструкции и пустое место может также распологаться после элементов (операторов) документа. -->

<?МуАрр Parm1="value 1" Parm2="value 2" ?>

Номер версии в XML-объявлении в начале пролога документа может быть заключен как в одинарные, так и в двойные кавычки. Строки в кавычках в XML-разметке носят название литерал. Таким образом, обе приведенные ниже записи являются допустимыми:

<?xml version='1.0'?> 

<?xml version="1.0"?>

XML-объявление в примере (см. Листинг 3-1) также включает в себя объявление документа автономным (standalone='yes'). Это объявление может использоваться в некоторых XML-документах с целью упростить обработку документа. (Об объявлении документа автономным будет рассказано в главе 6.)

В рассматриваемом примере имеется комментарий в прологе, а также другой комментарий, следующий за элементом Документ. (Подробнее о комментариях вы узнаете в главе 4.)

Документ содержит две пустые строки в прологе и две пустые строки в разделе, следующем за элементом Документ. Пустая строка состоит из одного или нескольких пробелов, символа табуляции, возврата каретки или перевода строки. Чтобы улучшить внешний вид и восприятие XML-доку-мента, вы можете свободно добавлять пробелы и пустые строки между элементами XML-разметки, такими как начальные и конечные теги, комментарии и инструкции по обработке - а также во многих случаях внутри элементов разметки, например, пробел между "yes" и ? в конце XML-объяв-ления в рассматриваемом примере. Процессор просто игнорирует пропуски, если только они не находятся внутри элемента, непосредственно содержащего символьные данные. (В этом случае процессор передает пропуски приложению как часть символьных данных элемента.)

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

Наконец, документ включает в себя sine qua поп (обязательную часть) XML-документа: элемент Документ. Создание элемента Документ и вложенных в него элементов является основным предметом рассмотрения в этой главе.

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

 

Наименьший XML-документ

Пролог рассматриваемого XML-документа (см. Листинг 3-1) содержит примеры каждого из разрешенных внутри пролога включений. Заметим, однако, что все эти включения не являются обязательными (хотя в спецификации XML заявлено, что вам «следует» включать XML-объявление). Следовательно, и сам пролог является необязательным, что подтверждается следующим минимальным документом, который содержит только элемент Документ, в соответствии с XML-стандартом для корректно сформированного документа.

<minimal>A minimalist document.</minimal>

В Internet Explorer 5 этот документ будет отображен, как показано на следующем рисунке.

 

Добавление элементов в документ

Элементы в XML-документе содержат фактическую информацию, имеющуюся в документе (для Листинга 3-1, например, это названия книг, фамилии авторов, цена и т. д.), а также отражают логическую структуру информации.

Элементы организованы в иерархическую древовидную структуру, в которой одни элементы вложены в другие. Документ должен иметь один и только один элемент верхнего уровня - элемент Документ, или корневой элемент — а все другие элементы вложены в него. Представленный ниже XML-документ является корректно сформированным.

<?xml version="1.0"?>

<!--Коррекгно сформированный ХМL-документ.--> \

<INVENTORY> 

<ВООК>

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE> 

</BOOK> 

<BOOK>

<TITLE>Leaves of Grass</TITLE>

<AUTHOR>Walt Whitman</AUTHOR>

<BINDING>hardcover</BINDING>

<PAGES>462</PAGES>

<PRICE>$7.75</PRICE> 

</BOOK> 

</INVENTORY>

А вот следующий документ не является корректно сформированным.

<?xmlversion="1.0"?>

<!--Это НЕ корректно сформированный документ.-->

<ВООК>

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE> 

</BOOK> 

<BOOK>

<TITLE>Leaves of Grass</TITLE>

<AUTHOR>Wait Whitman</AUTHOR>

<BINDING>hardcover</BINDING>

<PAGES>462</PAGES>

<PRICE>$7.75</PRICE> 

</BOOK>

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

<ВООК>

<TITLE>Leaves of Grass<AITLE>

<AUTHOR>Walt Whitman</AUTHOR> 

</BOOK>

В то же время эти элементы не являются корректно сформированными:

<!-- НЕ корректно сформированный документ.-> 

<BOOK><TITLE>The Adventures of Huckleberry Finn</ВООК><TITLE>

Примечание. Элемент, который содержит один или более вложенных элементов (например, BOOK в Листинге 3-1), называется родительским элементом. Элемент, содержащийся непосредственно внутри родительского элемента (например, TITLE внутри BOOK), называется дочерним элементом, субэлементом или. вложенным элементом.

Анатомия элемента

Элемент обычно состоит из начального тега, содержимого и конечного тега, как показано на следующем рисунке.

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

Имя, которое содержится в стартовой позиции начального тега и в конечном теге (TITLE в нашем примере), называется типом или родовым идентификатором элемента (GI). Имя элемента идентифицирует особый тип или класс элемента, а не собственно элемент. Таким образом, документ может содержать более одного элемента с одинаковыми именами типа (например, элементы BOOK или TITLE в Листинге 3-1). При добавлении элемента в XML-документ вы можете выбрать любое имя типа по вашему желанию, руководствуясь при этом следующими правилами:

Ниже приведены примеры правильного задания имен типов элементов.

Part

JstPlace

А

B-SECTION

Street.Address.1

Следующие имена использовать недопустимо:

1stPlace  <!-- В качестве первого символа нельзя использовать цифру --> 

В Section <!-- Пробел внутри имени не разрешается --> 

B/Section <!-- Косая черта внутри имени не разрешается --> 

:Chapter  <!-- Двоеточие нельзя использовать в качестве первого символа --> 

A:Section <!-- ВIE5 допускается, только если вы объявили А как пространство имен -->

Примечание. В соответствии с XML-спецификацией двоеточие (:) в имени элемента зарезервировано для задания пространства имен. Пространства имен дают возможность дифференцировать элементы с одними и теми же именами. Этот вопрос будет обсуждаться в главе 7 в разделе «Вставка HTML-элементов в XML-документы и использование пространств имен». Internet Explorer 5 разрешает вам использовать двоеточие в имени элемента только в том случае, если оно следует за пространством имен, объявленным вами в документе. Например, запись A:Section будет корректной, только если вы объявили А как пространство имен.

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

<Title>Chapter one </title> <!-- НЕ корректно. -->

Соблюдение регистра существенно для имен элементов, как и для всего текста в описании разметки. Так, тип элемента с именем Асе не будет эквивалентен типу асе или АСЕ.

Типы содержимого элемента

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

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

При добавлении в элемент символьных данных вы можете использовать любые символы, за исключением левой угловой скобки (<), амперсенда (&) и строки ]]>.

Примечание. Синтаксический анализатор XML сканирует символьные данные элемента для XML-разметки. Вы не можете использовать левую угловую скобку (<), амперсенд (&) или строку ]]> в составе символьных данных, поскольку анализатор может интерпретировать < как начало вложенного элемента, & как начало ссылки на примитив или символ, а ]]> как окончание раздела СВАТА. (О ссылках на примитивы и ссылках на символы пойдет речь в главе 6; о разделе СВАТА в главе 4). Если вы хотите использовать символы < или & как часть символьных данных, вам необходимо воспользоваться разделом СВАТА. Вы также можете использовать любые символы (в том числе те, которых нет на клавиатуре), воспользовавшись ссылкой на символ. Некоторые символы (например, < или &) вы можете вставлять с использованием предопределенных ссылок на общие примитивы.

Пустые элементы

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

<HR></HR> 

Либо вы можете использовать специальный тег пустого элемента:

<HR/>

Эти нотации являются эквивалентными.

Поскольку пустой элемент не имеет содержимого, у вас может возникнуть вопрос о его предназначении. Есть два варианта:

Совет. Таблица каскадных стилей может использовать пустой элемент для отображения рисунка, подробнее об этом вы можете узнать в главе 7. В главе 8 вы узнаете, как применять связывание данных для доступа к атрибутам пустого или непустого элемента. В главе 9 вы научитесь использовать HTML-сценарии, а в главе 10 — XSL-таблицы стилей, для доступа к элементам и их атрибутам.

Создайте различные типы элементов

  1. 1. Откройте новый, пустой текстовый файл в вашем текстовом редакторе и наберите XML-документ, содержащийся в Листинге 3-2. (Копия этого листинга содержится на CD-ROM в файле Inventory03.xml.) Если хотите, можете воспользоваться документом Inventory.xml, созданным вами в главе 2 (см. Листинг 2-1 и файл на CD-ROM) в качестве отправной точки.
  2. 2. Воспользуйтесь командой Save (Сохраншь) вашего текстового редактора, чтобы сохранить документ на жестком диске, присвоив ему имя Inventory03.xml.

Листинг 3-2

Inventory03.xml

<?xml version="1.0"?>

<!-- Имя файла: Inventory03.xml -->

<?xml-stylesheet type="text/css" hief="lnventory02.css"?>

<INVENTORY> <!-- Каталог избранных произведений

американской литературы 19-го века --> 

<ВООК>

<COVER_IMAGE Source="Huck.gif" />

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE> 

</BOOK> <BOOK>

<COVER_IMAGE Source="leaves.gif" /> 

<TITLE>Leaves of Grass</TITLE> 

<AUTHOR>Walt Whitman</AUTHOR>

<BINDING>hardcover</BNDING>

<PAGES>462</PAGES>

<PRICE>$7.75</PRICE> 

</BOOK> 

<BOOK>

<COVER_IMAGE Source="Faun.gif" />

<TITLE>The Marble Faun<TITLE>

<AUTHOR>Nathaniel Hawthorne</AUTHOR>

<B!NDING>trade paperback</BINDING>

<PAGES>473</PAGES>

<PRICE>$10.95</PRICE> 

</BOOK> 

<BOOK>

<COVER IMAGE Source="Moby.gif" />

<TITLE>

Moby-Dick j 

<SUBTITLE>Or, the Wiale</SUBTITLE>

</TITLE>

<AUTHOR>Herman Melville</AUTHOR> 

<BINDING>hardcover</BINDING> 

<PAGES>724</PAGES> 

<PRICE>$9.95</PRICE> 

</BOOK> 

</INVENTORY>

Примечание. Созданный вами документ использует CSS с именем lnventory02.CSS, который вы создали в предыдущем упражнении. (См. Листинг 2-4 и файл на CD-ROM.) Проверьте, чтобы файл с этой таблицей стилей был в той же папке, что файл Inventory03.xrnl.

  1. В Windows Explorer или в окне папки дважды щелкните на имени ранее сохраненного файла InventoryOS.xml. Internet Explorer 5 отобразит документ, как показано на следующем рисунке.

Документ содержит следующие типы элементов:

Задание атрибутов для элементов

В начальный тег элемента либо в тег пустого элемента вы можете включить одно или несколько описаний атрибутов. Описание атрибута представляет собой пару имя - значение, связанную с данным элементом. Например, следующий элемент PRICE включает атрибут с именем Туре, которому присвоено значение retail:

<PRICE Type="retail">$10.95</PRICE> 

Следующий элемент BOOK включает два атрибута, Category и Display:

<ВООК Category="fiction" Disday="emphasize">

<TITLE>The Marble Fauh</TITLE>

<AUTHOR>Nathaniel Hawttome</AUTHOR>

<BINDING>trade paperbacc</BINDING>

<PAGES>473</PAGES>

<PRICE>$10.95</PRICE> 

</BOOK>

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

<COVERJMAGE Source="Faungif" />

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

Примечание. Когда вы отображаете XML-документ с использованием CSS-таблицы (данный метод будет обсуждаться в главе 7), браузер не выводит атрибуты или их значения. Отображение же XML-документа с использованием связывания данных (см. главу 8), сценария для HTML-страницы (см. главу 9), либо XSL-таблицы стилей (см. главу 10) дает вам доступ к атрибутам и их значениям.

Правила для создания атрибутов

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

Например, следующие описания имен в стартовых тегах являются допустимыми:

<ANIMATION FileName="Waldo.ani"> 

<LIST _1stPlace="Sam"> 

<ENTRY Zip.Code="94941">

Приведенные ниже имена атрибутов недопустимы:

<!-- Дублирование имени атрибута внутри одного тега: --> 

<ANIMATION FileName="Waldo1.ani" RleName="Waldo2.ani"> 

<LIST 1stPlace=""Sam"> <!- Первый символ не может быть цифрой --> 

<ITEM A:Category="cookware"> <!-- ВIE5 допускается, только 

если вы объявили А как пространство имен -->

Примечание. В соответствии с XML-спецификацией двоеточие (:) в имени элемента зарезервировано для задания пространства имен. Пространства имен дают возможность дифференцировать элементы с одними и теми же именами; этот вопрос будет обсуждаться в главе 7 в разделе «Вставка HTML-элементов в XML-документы и использование пространств имен». Internet Explorer 5 разрешает вам использовать двоеточие в имени элемента только в том случае, если оно следует за пространством имен, объявленным вами в документе. Например, запись A:Category будет корректной, только если вы объявили А как пространство имен.

Правила для корректного задания значений атрибутов

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

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

<EMPLOYEEStatus=""downsized""> <!-- Нельзя использовать 

символыограничители внутри строки. -->

<ALBUM Type="<CD>"> <!- - Нельзя использовать символ < внутри строки --> 

<WEATHER Forecast="Cold &Windy"> <!-- Нельзя использовать символ &,

если это не ссылка -->

Если вы хотите использовать двойные кавычки (") внутри значения атрибута, вам следует применить в качестве ограничителей одинарные кавычки ('), как показано в примере:

<EMPLOYEE Status='"downsized"'> <!-- Правильное значение атрибута. -->

Аналогично, чтобы включить одинарные кавычки в значение атрибута, следует использовать в качестве ограничителей двойные кавычки:

<CANDIDATE name="W.T, 'Bill' Bagley"> <!-- Правильное значение атрибута. -->

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

Если вы создаете корректно сформированный документ, не объявляющий тип документа (как вы делали в упражнениях данной главы), вы можете присвоить атрибуту любое значение, соответствующее приведенным выше правилам. Однако, если вы создаете описание типа документа и определяете внутри него атрибуты, то можете ограничить типы значений, которые могут быть присвоены конкретному атрибуту. Например, вы можете определить атрибут, которому могут быть присвоены только значения «yes» или «nо». Таким образом, одно из преимуществ задания определенного типа информации через атрибуты элементов в отличие от задания через содержимое элемента заключается в том, что при этом вы можете контролировать все типы данных, которые могут быть присвоены атрибуту, и синтаксический анализатор учитывает эти ограничения типов. (Как вы узнаете в главе 5, в основной спецификации XML не указаны средства для ограничения типов символьных данных для элемента.)

Преобразуйте содержимое в атрибуты

  1. Откройте новый, пустой текстовый файл в вашем текстовом редакторе и наберите XML-документ, представленный в Листинге 3-3. (Копия этого листинга содержится на CD-ROM в файле Inventory04.xml.) При желании можете воспользоваться ранее созданным вами документом Inventory.xml (см. Листинг 2-1 и соответствующий файл на CD-ROM) в качестве отправной точки.
  2. Воспользуйтесь командой Save (Сохранить) вашего текстового редактора, чтобы сохранить документ на жестком диске как Inventory04.xml.

Листинг 3-3

Inventory04.xml

<?xml version="1.0"?>

<!-- Имя файла: Inventory04.xml -->

<?xmi-stylesheet type="text/css" href="lnventory02.css"?>

<INVENTORY>

<BOOK Binding-mass market paperback">

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR Born="1835">Mark Twain</AUTHOR>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

<BOOK Binding="hardcover">

<TITLE> Leaves of Grass</TITLE>

<AUTHOR Born="1819">Walt Whitman</AUTHOR>

<PAGES>462</PAGES> 

<PRICE>$7.75</PRICE> 

</BOOK> 

<BOOK Binding="trade paperback"> 

<TITLE>The Marble Faun</TITLE> 

<AUTHOR Born=" 1804">Nathaniel Hawthorne</AUTHOR> 

<PAGES>473</PAGES> 

<PRICE>$10.95</PRICE> 

</BOOK>

<BOOK Binding="hardcover"> 

<TITLE>Moby-Dick<TITLE>

<AUTHOR Born=" 1819">Herman Melville</AUTHOR> 

<PAGES>724</PAGES> 

<PRICE>$9.95</PRICE> 

</BOOK> 

</INVENTORY>

Примечание. Созданный вами документ использует CSS-таблицу с именем Inventory02.css, которую вы создали в предыдущем упражнении. (См. Листинг 2-4 на CD-ROM.) Проверьте, что этот файл таблицы стилей находится в той же папке, что и файл Inventory04.xml.

  1. В Windows Explorer (Проводник) или в окне папки дважды щелкните на имени файла Inventory04.xml. Internet Explorer 5 отобразит документ, как показано на следующем рисунке.

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

Это только несколько из обширных возможностей применения атрибутов. Подробнее эти вопросы будут обсуждены в главе 5





Copyright © Realcoding.NET 2003-2007. При перепечатке материалов ссылка на автора материала обязательна.
Сообщить об ошибке или написать письмо администрации через форму контактов.

realcoding.net Webalta Уровень доверия