Xml атрибуты и элементы. XML атрибуты

23.03.2019

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

Некоторые моменты, такие как теги XML, мы уже частично рассматривали в предыдущей статье « Разметка XML-документов ». Теперь мы еще раз затронем эту тему и разберем ее более подробно. Это сделано специально, чтобы вам было проще представить всю картину конструкций XML.

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

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

Пустой элемент XML

Непустой элемент XML

Содержимое элемента...

Как мы видим с примера выше, главным отличием пустых элементов от непустых является то, что они состоят только из одного тега. Кроме того стоит также заметить, что в XML все имена регистрозависимые. Это означает, что имена myElement, MyElement, MYELEMENT и т.д. различаются между собой, поэтому данный момент стоит сразу запомнить, чтобы избежать ошибок в будущем. Итак, с элементами мы разобрались. Теперь давайте перейдем к следующему моменту, такому как логическая организация XML-документов.

Логическая организация XML-документов. Древовидная структура XML данных

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

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

Как мы видим, организация XML-документа в виде дерева является довольно простой структурой для обработки. При этом выразительная сложность самого дерева достаточно велика. Именно древовидное представление является наиболее оптимальным способом описания объектов в XML.

Атрибуты XML. Правила записи атрибутов в XML

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

В данном случае использовался атрибут с именем «attribute» и значением «value». Тут стоит сразу заметить, что атрибут XML обязательно должен содержать какое-то значение и не может быть пустым. В противном случае код будет некорректным с точки зрения XML.

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

Прежде чем приступить к рассмотрению других конструкций XML стоит также заметить, что при создании атрибутов в качестве значений не могут использоваться такие специальные символы, как амперсанд «&» или угловые скобки «<>». Данные символы зарезервированы в качестве управляющих («&» - сущность, а «<» и «>» открывают и закрывают тег элемента) и не могут быть использованы в «чистом виде». Для их использования нужно прибегать к замене спецсимволов.

Инструкции по обработке XML (процессинговые инструкции). XML-декларация

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

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

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

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

Поскольку мы разобрались с псевдоатрибутами, то давайте рассмотрим, что же они означают.

Encoding – отвечает за кодировку XML документа. Обычно используется кодировка UTF8. Version – версия языка XML, на котором написан данный документ. Обычно это XML версии 1.0.

Ну а теперь перейдем к заключающей части статьи и рассмотрим такие конструкции XML как комментарии и секции CDATA.

Элементы XML-документа

XML - файл состоит из текста и разметки. Текст размещается в элементе , который начинается и заканчивается тегами.

Элемент имеет имя (это тип элемента ), заключённое в угловые скобки <>, которое определяет начальный и конечный тэг (дискриптор). Имена (типы элементов) чувствительны к регистру символа. Имя элемента может начинаться с буквы, знака подчёркивания (_) или двоеточия (:) и не могут начинаться с буквосочетания “xml”.

Конечный тэг (дискриптор) дополнительно имеет косую черту.

Элемент может содержать один тэг (дискриптор) с пробелом и замыкающей косой чертой в конце:

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

Угловая скобка в начале дискриптора (<) в языках разметки называется MDO (Markup Declaration Open – открытие декларации разметки), а в конце дискриптора (>) - называется MDC (Markup Declaration Close – закрытие декларации разметки).

Хорошо оформленный XML документ обязательно должен иметь корневой элемент (root element ). Внутри корневого элемента кроме текста могут находиться вложенные элементы :

"Учебное пособие по XМL"

Леонтьев Алексей Георгиевич

В XML - файле должен присутствовать только один корневой элемент. В примере это .

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

Такое требование возникло потому, что один документ XML можно вложить в другой. При этом корневой элемент вложенного документа станет просто одним из элементов документа, в который он вложен. Такое вложение не нарушит структуру документа.

Начинается XML-файл обычно с объявления , которое ещё называют пролог (prolog ). Пролог состоит из двух частей.

Первая часть пролога включает декларацию XML (XML Declaration ). Декларация заключена между символами , содержит пометку xml и номер версии спецификации XML. Она может включатьуказания на кодировку символов в которой написан данный текст. В объявление можно поместить еще параметр standalone со значениями "yes" или "no". Значение "no" показывает, что документ использует определения элементов, сделанные в другом, внешнем, документе. По умолчанию принимается значение "yes". Итак, полное объявление XML может выглядеть следующим образом:

Вторая часть пролога - объявление типа документа , DTD (Document Type Declaration ) - может занимать одну или несколько строк. В этой части объявляются теги, использованные в документе, или приводится ссылка на файл, в котором записаны такие объявления. Объявление типа документа начинается с символов . Его содержимое зависит от способа объявления тегов.

Все это вместе выглядит так:

В примере рассматривается первая версия XML и русская кодировка символов для операционных систем Windows. Для операционных систем UNIX русская кодировка – "KOI8-R". Можно использовать универсальную кодировку "UTF-8" для Unicode.

Правила описания элементов XML-файла tutorial находится в каталоге SYSTEM, а не в общем каталоге PUBLIC в файле filename.dtd.

В примере, в соответствии с правилами, имя XML документа tutorial совпадает с именем корневого элемента.

Атрибуты XML-документа

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

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

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

< myElement attribute=""value"">< /myElement>

Если значение атрибута содержит в себе кавычки, то его нужно заключить в апострофы, если значение содержит апострофы, то его заключают в кавычки. Если же кавычки и апострофы уже использованы для ограничения значений атрибутов, то внутри значения кавычку можно заменить ссылкой на сущность " , а апостроф – ссылкой " . Вместо ссылок на сущности можно записать коды кавычки и апострофа– " и " . В шестнадцатеричной форме коды кавычки и апострофа выглядят так: х22; и х27; .

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

Атрибуты удобны для описания простых значений. Практически у каждого гражданина России обязательно есть одно имя, одно отчество и одна фамилия. Их удобно записывать атрибутами. Но у гражданина России может быть несколько телефонов, поэтому их номера удобнее оформить как элементы < work-phone> и < home-phone> , вложенные в элемент < phone-list> , а не атрибуты открывающего тега < phone-list> . Заметьте, что элемент < name> с атрибутами пустой, у него нет содержимого, следовательно, не нужен закрывающий тег. Поэтому тег < name> с атрибутами завершается символами "/> ". Пример XML-документа с атрибутами в открывающем теге:

< notebook>

< person>

< />

< birthday> 25.03.1977 birthday>

< address>

< street> Садовая, 23-15 street>

< city> Санкт-Петербург city>

< zip> 123456 zip>

address>

< phone-list>

< work-phone>2654321 work-phone>

< work-phone>2654 023 work-phone>

< home-phone>34567 81 home-phone>

phone-list>

person>

< person>

< name first="Mapия" sесоnd ="Петровна" surname="Сидорова" />

< birthday> 17.05.1969 birthday>

< address>

< street> Малиновская, 17 street>

< city>Пушкин city>

< zip> 234561 zip>

address>

< phone-list>

< home-phone> 2334455 home-phone>

phone-list>

person>

notebook>

В этом примере первые две строки – пролог (декларации, определения).

Элемент < name first="Ивaн" sесоnd="Петрович" surname="Сидоров" /> - пустой и содержит три атрибута.

Элемент < person> повторяется дважды и является родительским для элементов: < name />, < birthday> , < address>, < phone-list>. Некоторые из этих элементов в свою очередь являются родительскими.

Атрибуты открывающего тега удобны и для указания типа элемента. Например, мы не уточняем, в городе живет наш родственник, в поселке или в деревне. Можно ввести в открывающий тег < city> атрибут type, прини­мающий одно из значений город, поселок, деревня. Например:

< city type="город"> Mocквa city>

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


Похожая информация.


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

Некоторые моменты, такие как теги XML, мы уже частично рассматривали в предыдущей статье « ». Теперь мы еще раз затронем эту тему и разберем ее более подробно. Это сделано специально, чтобы вам было проще представить всю картину конструкций XML.

Элементы XML. Пустые и непустые элементы XML

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

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

Пустой элемент XML

Непустой элемент XML

Содержимое элемента...

Как мы видим с примера выше, главным отличием пустых элементов от непустых является то, что они состоят только из одного тега. Кроме того стоит также заметить, что в XML все имена регистрозависимые. Это означает, что имена myElement, MyElement, MYELEMENT и т.д. различаются между собой, поэтому данный момент стоит сразу запомнить, чтобы избежать ошибок в будущем.
Итак, с элементами мы разобрались. Теперь давайте перейдем к следующему моменту, такому как логическая организация XML-документов.

Логическая организация XML-документов. Древовидная структура XML данных

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

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

Как мы видим, организация XML-документа в виде дерева является довольно простой структурой для обработки. При этом выразительная сложность самого дерева достаточно велика. Именно древовидное представление является наиболее оптимальным способом описания объектов в XML.

Атрибуты XML. Правила записи атрибутов в XML

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

В данном случае использовался атрибут с именем «attribute» и значением «value». Тут стоит сразу заметить, что атрибут XML обязательно должен содержать какое-то значение и не может быть пустым. В противном случае код будет некорректным с точки зрения XML.

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

Прежде чем приступить к рассмотрению других конструкций XML стоит также заметить, что при создании атрибутов в качестве значений не могут использоваться такие специальные символы, как амперсанд «&» или угловые скобки «<>». Данные символы зарезервированы в качестве управляющих («&» — сущность, а «<» и «>» открывают и закрывают тег элемента) и не могут быть использованы в «чистом виде». Для их использования нужно прибегать к замене спецсимволов.

Инструкции по обработке XML (процессинговые инструкции). XML-декларация

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

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

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

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

Поскольку мы разобрались с псевдоатрибутами, то давайте рассмотрим, что же они означают.

  • Encoding – отвечает за кодировку XML документа. Обычно используется кодировка UTF8.
  • Version – версия языка XML, на котором написан данный документ. Обычно это XML версии 1.0.

Ну а теперь перейдем к заключающей части статьи и рассмотрим такие конструкции XML как комментарии и секции CDATA.

Элементы или атрибуты?

Вопросы проектирования XML-форматов

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

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

Важно помнить о различии между XML-документами, которые должны быть просто корректно оформлены, и теми, что обязаны быть допустимыми согласно некоторому DTD/Схеме. Допустимость является гораздо более строгим критерием: с ее помощью можно потребовать, чтобы были представлены определенные данные, и чтобы они были структурированы заданным образом. Именно по этой причине приходится прикладывать гораздо больше усилий для того, чтобы процесс создания заданного документа соответствовал условиям допустимости. У обоих подходов имеются свои преимущества; использование DTD усложняет задачу выбора элементов/атрибутов, но у обоих случаях есть свои плюсы и минусы. Ниже рассмотрены эти две альтернативы.

Важен ли порядок следования данных

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

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

Листинг 1. Использование атрибутов для передачи контактной информации Листинг 2. Использование вложенных элементов для передачи контактной информации Jane Doe 74 555-3412 Chieu Win 555-8888 44

Теперь представим, какой DTD может быть задан для каждого из этих XML-форматов. Для Листинга 1, демонстрирующего использование атрибутов, это мог бы быть следующий DTD:

Листинг 3. DTD для документа с использованием атрибутов

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

Листинг 4. DTD для документа с использованием вложенных элементов

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

Возможность нахождения многочисленных данных на одном уровне

Если одни и те же данные неоднократно повторяются в пределах объекта, вложенные элементы несомненно предпочтительней. Например, в рассмотренном выше примере объект contacts содержит множество объектов contact . Понятно, что в этом случае каждый контакт должен быть описан в элементе-потомке элемента contacts .

Однако, в реальной жизни при внесении изменений разработчики часто уходят от этого принципа проектирования. Рассмотрим, как это может происходить: сначала вы определяете, что у каждого Flazbar имеется прикрепленный к нему flizbam (а flizbam описывается одной величиной). Кажется вполне разумным сберечь дополнительное наполнение вложенных элементов и создать атрибут flizbam для тега Flazbar . Однако, затем - после того, как вы уже написали великолепный рабочий код для обработки несколькими Flazbar - вы узнаете, что в некоторых случаях у Flazbar могут быть два flizbam. Но это не проблема: вы вносите незначительные изменения в установленный код и просто переписываете DTD:

После исправления кода ваши старые XML-документы по-прежнему допустимы, и новые работоспособны. Немного погодя вы обнаруживаете, что у Flazbar может быть третий flizbam...

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

Моделирование неупорядоченных вложенных элементов

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

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

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

Обязательность сохранения свободного места

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

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

Важность удобочитаемости

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

Лично мне гораздо легче читать и писать атрибуто-ориентированные XML-форматы, а не ориентированные на вложенные элементы. Чтобы пояснить сказанное, вернемся к Листингам 1 и 2. Ни один из них не так уж сложно читать, но Листинг 2 , который демонстрирует подход, основанный на использовании атрибутов - проще, его также легче писать, поскольку не нужно озадачиваться проблемой непостоянства порядка следования вложенных элементов.

Заключение

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

Ресурсы

  • Все, что действительно необходимо знать о XML, это Рекомендация W3C "Расширяемый язык разметки (XML) 1.0" (Extensible Markup Language (XML) 1.0). Разумеется, чтобы понять, какое она имеет значение, требуется немного проницательности.
  • В рубрике XML Cover Pages приводятся рекомендации по "Использованию элементов и атрибутов" (Using elements and attributes). На этой странице также можно найти ссылки на ряд статей, в которых предлагаются взаимопротиворечащие рассуждения о том, что выбрать атрибуты или элементы. Именно по этой причине мы, программисты, и "получаем наш длинный доллар"!
  • Еще один способ понять различие между атрибутами и элементами - это изучить материалы "Форматы, основанные на документах, или форматы, основанные на данных" (" ").
  • Познакомьтесь с другими статьями колонки "Советы о XML" (XML tips), публикуемыми в разделе developerWorks XML.

Об авторе

Дэвид Мертц использует абсолютно неструктурированный интеллект, чтобы писать о форматах структурированных документов. Дэвид доступен по адресу: [email protected] , а жизнь его описана на http://gnosis.cx/publish/ .


По всей видимости, это опечатка (в оригинале стоит Listing 2): и вместо Листинга 2 должен быть Листинг 1 (прим. пер.)

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

Синтаксис

Атрибут XML имеет следующий синтаксис:

....content.. < /element-name>

где attribute1 и attribute2 имеют следующее сформировать:

Name = "value"

значение должно находиться в двойном ("") или определиться ("") цитаты. Здесь, attribute1 и attribute2 уникально ярлыки атрибута.

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

]>

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

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

Вы можете также наблюдать что мы объявляли этот атрибут в начале XML.

Типы атрибута

Следовать таблица перечисляет тип атрибутов:

Тип атрибута Описание
StringType

Оно принимает любую буквальную строку как значение. CDATA StringType. CDATA данные по характера. Эт середины, любая строка характеров non-повышения цены законная часть атрибута.

TokenizedType

Это больше ограниченный тип. Ограничения по ценности замеченные в грамматике прикладной после того как атрибут со значением normalized. Атрибуты TokenizedType даются как:

    Удостоверение личности: Оно использован для того чтобы определить элемент как уникально.

    IDREF: Использовано для того чтобы снабдить ссылками удостоверение личности которое было названо для другого элемента.

    IDREFS: Оно использован для того чтобы снабдить ссылками все IDs элемента.

    ENTITY: Она показывает что атрибут представит внешнюю реальность в документе.

    ENTITIES: Она показывает что атрибут представит внешние реальности в документе.

    NMTOKEN:

    NMTOKENS: Оно подобен к CDATA с ограничениями на какие данные могут быть частью атрибута.

ПеречисленныйTип

Это имеет список предопределенных значений в своем объявлении. из что, оно должно задать одно значение. 2 типа перечисленного атрибута:

    Тип примечания: Оно объявляет что элемент будет снабжен ссылками к НОТАЦИИ объявленной где-то еще в документе XML.

    Обозначение: Обозначение позволяет вам определить специфический список значений которым атрибут со значением должен соответствовать.

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

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

    Имя атрибута не должно появляться больше чем раз в такую же бирку старт-бирки или пуст-элемента.

    Атрибут необходимо объявить в определении типа документа (DTD) используя объявление Атрибут-Списка.

    Атрибуты со значением не должны содержать сразу или косвенные справки реальности к внешним реальностям.

    Текст замены любой реальности сослался к сразу или косвенно в атрибуте со значением содержать также чем знак <