Архів рубрики: Книги з XML. XML це дуже просто ... Навчання xml з нуля

Перші кроки

Розберемо тепер докладніше перший приклад. Нагадаємо його текст.


< tutorial >
< title >"Нотатки про XSL"
< author >Леонов Ігор Васильович

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

Наступні рядки – це тіло XML-файлу. Воно складається з елементів, що у сукупності утворюють деревоподібну структуру. Елементи ідентифікуються тегами та можуть бути вкладені один в одного.

Елементи можуть мати атрибути, значення яких можуть оброблятися відповідно до шаблону.

На верхньому рівні файлу XML завжди знаходиться один елемент. Тобто файл виду


< tutorial >
< title >"Нотатки про XSL"
< author >Леонов Ігор Васильович

< tutorial >
< title >"Вступ до CSP"
< author >Леонов Ігор Васильович

не оброблятиметься браузером. Для перетворення на коректний XML-файл потрібно додати теги елемента верхнього рівня, наприклад


< knowledgeDatabase >
< tutorial >
< title >"Нотатки про XSL"
< author >Леонов Ігор Васильович

< tutorial >
< title >"Вступ до CSP"
< author >Леонов Ігор Васильович

< /knowledgeDatabase >

Зазначимо, що імена тегів чутливі до регістру символів. Докладніше про це можна прочитати в будь-якій книзі по XML - елементам та атрибутам у цих книгах приділяється досить велика увага.

Перейдемо тепер до шаблону перетворення - до файлу XSL. Завдання XSL-файлу - перетворити дерево XML-файлу на інше дерево, яке, наприклад, відповідатиме формату HTML і може бути зображене на екрані браузера з урахуванням форматування, вибору шрифтів тощо.

Щоб браузер виконав необхідне перетворення, потрібно в XML-файлі вказати посилання на XSL-файл


Розглянемо тепер текст XSL-файлу

< xsl:stylesheet version =" 1.0" xmlns:xsl =" http://www.w3.org/TR/WD-xsl">
< xsl:template match =" /">
< p >< strong >< xsl:value-of select =" //title""/>
< p >< xsl:value-of select =" //author"/>

Перший рядок файлу містить тег елемента xsl: stylesheet. Атрибути елемента – номер версії та посилання на простір імен. Ці атрибути елемента xsl:stylesheet є обов'язковими. У нашому випадку простір імен - це всі імена елементів та їх атрибутів, які можуть бути використані в XSL-файлі. Для файлів XSL посилання на простір імен є стандартним.

Зауважимо, що XSL-файл є одним з різновидів XML-файлів. Він не містить даних, але формат його той же самий. Файл містить елемент верхнього рівня xsl:stylesheet, а далі йде дерево правил перетворення.

У цьому документі ми не докладно пояснюватимемо, що означає кожен елемент XSL-файлу. Ми наводитимемо різні приклади і показуватимемо результат у кожному прикладі. Читач зможе самостійно зіставити різні елементи XSL-файлу та ініційовані цими елементами перетворення вихідного XML-файлу з інформацією користувача.

Надалі тексти XML- і XSL-файлів ми будемо наводити у чорно-білому варіанті. Ви завжди зможете відкрити реальний файл та подивитися все у кольорі. За необхідності закоментуйте посилання на файл XSL. Синтаксис коментаря наступний . У текст коментаря не можна вставляти символи.

У першому прикладі ми подивилися, як за допомогою елемента xsl:value-of можна вивести HTML-форматі зміст елемента (текст, укладений між тегами). Тепер ми подивимося, як за допомогою того ж елемента можна вивести значення атрибута елемента.

Розглянемо наступний файл XML ex02-1.xml







У цьому файлі інформація зберігається над змісту елементів, а вигляді значень атрибутів. Файл ex02-1.xsl має вигляд




.
, .



Зверніть увагу на синтаксис посилання на атрибут елемента //dog /@ name. Ім'я елемента та ім'я атрибута розділені парою символів "/@". В іншому синтаксис той же, що й для посилання на вміст елемента.

Результат має такий вигляд:

Собака: Кулька. 18 кг, рудий із чорними підпалинами.

Звернемо тепер увагу наступного моменту. У XSL-файлі ми не використовували елемент tutorial . Насправді можна було використати повний шлях. Перепишемо наш XML-файл, збільшивши глибину дерева (ex02-2.xml)









У книзі містяться поради, алгоритми та готові приклади програм з різних областей: шифрування, файлові та мережеві операції, XML, ASP.NET, взаємодія з MS Office та Internet Explorerта ін. Описано синтаксис мови С#, питання налагодження та профілювання додатків, а також проблеми, що виникають при переході з інших мов програмування на мову С#. Розглядаються приклади регулярних виразів, що найчастіше використовуються. Окрема глава присвячена роботі з апаратурою.
Архів містить саму книгу та CD з вихідним кодом.

Посібник призначений для програмістів, що починають і продовжують вивчення технологій Java SE, JEE та інших. У його першій частині розглядаються основи мови Java та концепції об'єктно-орієнтованого програмування. У другій частині викладено аспекти застосування бібліотек класів мови Java, включаючи файли, колекції, мережеві та багатопотокові програми, а також взаємодію з ХМL. У третій частині наведено основи програмування розподілених інформаційних систем із застосуванням сервлетів, JSP та власних тегів розробника. У четвертій частині дано основи практичного застосуванняшаблони проектування.
Наприкінці кожного розділу даються тестові питання щодо матеріалу глави та завдання для виконання.
У додатках наведено додаткові матеріали, що стосуються використання UML, SQL, Ant, XML, а також короткий опис популярних технологій Log4J, JUnit, JPA та Hibernate.

Опис книги Open XML коротко та доступно:
У цій книзі міститься детальний огляд трьох основних мов розмітки стандарту Open XML. Книга розрахована на читачів, знайомих із XML або HTML. Архітектори та розробники ПЗ, що створюють орієнтовані на документи рішення, дізнаються, як побудувати ці рішення на платформі Open XML.

Ця книга буде корисна як новачкам у мовах розмітки, так і фахівцям у цій галузі, не знайомим із Open XML.

Опис книги Advanced Applications and Structures in Xml Processing: Label Streams, Semantics Utilization and Data Query Technologies:
Applications and Structures in XML Processing: Label Streams, Semantics Utilization and Data Query Technology reflects the significant research results and latest findings of scholars’ worldwide, working to explore and expand the role of XML. Ця колекція відповідає підписанням XML-процесорних технологій у зв'язку з новими пристосуваннями і останнім XML-процесорним технологіям, що є основним значенням. Це надає можливість докладних топиків в деталях і запису XML-реsearch на досконалому рівні.

Опис книги XML: розробка Web-додатків:
У книзі пропонується повний описмови XML разом із мовами XSLT і XPath, представлене у першій частині. Друга частина книги містить практичне керівництвощодо застосування матеріалу, викладеного у першій частині книги. Крім XML зачіпаються питання, що виникають при побудові реальних Web-програм, а саме передача параметрів HTTP-запиту серверу, проектування форм, представлення даних за допомогою каскадних стильових таблиць, обробка дій користувача за допомогою JavaScript.

Частина I. XML від А до Я

  • Мова XML
  • Мова XSLT
  • Мова XPath
  • Комплексний приклад
  • Необхідні доповнення

Частина ІІ. Практична розробка web-додатків

  • Засоби створення Web-програми
  • Каскадні стильові таблиці
  • Методика обробки даних
  • Подання даних

Опис книги Python & XML:
Якщо ви є Python programmer, які намагаються включити XML у свій skill set, це є книга для вас. Python має attracted широку варіацію розробників, які використовуються її як glue to connect critical programming tasks together, або як complete cross-platform application development language. Йти, тому що це об'єкт-орієнтований і має потужний текст поводження, Python є ідеальним мовою для XML.

Python & XML дає вам надійну поведінку для використання цих двох англійських мов. Loaded with practical examples, це новий обсяг високого освітлення загальних application tasks, so that you can learn by doing. Book starts with the basics then quickly progreses to complex topics, як transforming XML with XSLT, querying XML with XPath, and working with XML dialects and validation. Це також розкриває більше розширених можливостей: використовуючи Python з SOAP і distributed web services, і за допомогою Python для створення швидких streams між distributed applications (like databases and web servers).

Книги забезпечують ефективні практичні пристосування, при цьому, пов'язані з багатьма інструментами, що містяться в XML-процесорі і Python, і високих ліжках кросс-платформи, що тримаються взаємно з ходами, що відповідають плану комп'ютера. Ви будете мати широку версію XML flow analysis and details on ways which you can transport XML through your network.

Якщо ви використовуєте Python як application language, або як administrative or middleware scripting language, ви є benefit from this book. Якщо ви збираєтеся використовувати Python для користування XML, це є вашим інструментом.

Опис книги XML Bible:
Утилізація XML є величезним впливом на Web development, і розгортання освітлення цієї нової технології є prioritою для багатьох розробників. The XML Biblia offers superb introduction to the subject and the groundwork to understand XML"s future developments.

Автор Elliotte Rusty Harold використовує пацієнта, step-by-step discussion, що чітко points out potential of XML без висоти його вірші з тонами SGML spec-speak. Harold opens quickly with a 'Hello World' example to get the reader coding early, and follows that with with simple simple but powerful example of XML's data management benefits—prezenting baseball statistics. Once you"ve coded your first XML documents, you" ll be hooked on the technology and motivated to learn about the more sophisticated topics.

Стиль аркушів електронної пошти є пов'язаний з тим, щоб ілюструвати prezentation possibilities and pitfalls. У незвичайно тривалому вигляді реального життя XML applicationsas shows how XML is already be used, and there is in-depth coverage of Resource Description Framework, Channel Definition Format, and Vector Markup Language. Книга загортається з розділом, що вказує на ваші власні XML application from scratch.

Опис книги XSLT. Збірник рецептів:
Мова XSLT (Extensible Stylesheet Language Transformation) стала основним інструментом обробки XML-документів, але багато розробників все ще не освоїли його повною мірою і тому вважають, що простіше модифікувати наявний код, ніж писати новий з нуля. У версії 2.0 багато проблем вирішено, але з'явилася низка нових можливостей, які ще треба вивчити. До того ж вона поки що недостатньо підтримана.

У другому виданні цієї книги наведено сотні розв'язків задач, з якими регулярно стикаються програмісти. Надаються варіанти для обох версій XSLT. Діапазон рецептів надзвичайно широкий: від операцій з рядками та математичних обчислень до таких складних тем, як розширення XSLT, тестування та налагодження таблиць стилів та створення графіки у форматі SVG. У кожному рецепті обґрунтовується вибір рішення та пояснюється застосована техніка. Для багатьох завдань наводяться альтернативні рішення із зауваженнями щодо зручності користування та продуктивності.

Пропонуючи рецепти, які розраховані на різні рівні кваліфікації, ця книга стане ідеальним супутником програміста, який любить вчитися на прикладах. Неважливо, примірюєтеся ви до XSLT вперше або вже знайомі з цією мовою і хочете мати добірку готових рецептів для вирішення складних завдань, у ній ви знайдете різні способизастосування XSLT.

Опис книги Вивчаємо XML:
Дане видання присвячене мові розмітки XML, що розширюється, — перспективному і потужному інструменту, що забезпечує гнучкий спосіб створення документів, що самодокументуються. спільного використанняяк формату, і даних в Інтернеті. Розглянуто історію, сучасний стан та завдання XML, фундаментальні питання. Для розробників-початківців викладаються основи техніки створення документів XML, поняття елементів, атрибутів, сутностей і просторів імен XML. Професіоналам адресовані складні питання - трансформації, моделювання документів, тонка настройкашаблонів, XML-програмування, використання посилань та каскадних таблиць стилів.

У книзі на прикладах показано, як ефективно використовувати XML шляхом форматування та перетворення XML-документів для того, щоб вони могли оброблятися броузерами, базами даних і т.д. Матеріал супроводжується посиланнями реальні проекти. У програмах описано ресурси Інтернету, книги та стандарти, що стосуються XML. До книги включено глосарій.

Опис книги XML. Довідник:
"XML. Довідник" - це джерело інформації для розробників у світі XML, що швидко розвивається. Читачі, зрозумівши суть базового стандарту XML, зможуть швидко розібратися в тонкощах DTD, просторів імен, дотримання коректності документів XML та підтримки Unicode.

Одним із найбільш несподіваних напрямів розвитку XML стало його активне прийняття для роботи зі структурованими документами: електронними та математичними таблицями, статистичними та фінансовими звітами та файлами з програмним забезпеченням.

Огляд ключових технологій, що використовуються в основному для оповідальних XML-документів, таких як веб-сторінки, книги та статті, допоможе вам отримати практичні знання з XSLT, XPath, XLink, XPointer, CSS та XSL-FO. Напевно, багато хто зацікавиться застосуванням XML для інтенсивної обробки даних.

Декілька розділів присвячені утилітам і API, необхідним для написання програм обробки XML, таким як SAX - простому API для XML, і DOM - об'єктної моделі документів консорціуму W3C.

У книгу також включений матеріал, що утворює основу будь-якого довідника видавництва O"Reilly. У цих розділах наведені докладні синтаксичні правила (супроводжувані прикладами) основних технологій XML, у тому числі DTD, XPath, XSLT, SAX і DOM. У даному довіднику описані правила, яких повинні дотримуватися автори всіх XML-документів - як веб-дизайнери, що створюють анімації за допомогою SMIL, так і програмісти C++, які використовують SOAP для серіалізації об'єктів у віддалену базу даних.

Введення у правильну розмітку

XMLозначає Extensible Markup Language,з акцентом на markup(Розмітка). Ви можете створювати текст і розмічати його за допомогою тегів, що обрамляють, перетворюючи кожне слово, речення або фрагмент на ідентифіковану, сортовану інформацію. Створювані вами файли, або екземпляри документа, Складаються з елементів (тегів) і тексту, причому елементи допомагають правильно розуміти документ при читанні на папері або навіть обробляти його в електронному вигляді. Що більше описових елементів, то більше частин документа можна ідентифікувати. З перших днів існування розмітки одна з її переваг у тому, що у разі втрати комп'ютерної системироздруковані данівсе одно залишаються читабельними завдяки тегам.

Мови розмітки пройшли шлях від перших форм, створюваних компаніями та держустановами, до Стандартної мови узагальненої розмітки (Standard Generalized Markup Language - SGML), Гіпертекстової мови розмітки (Hypertext Markup Language - HTML) і в кінцевому підсумку до XML. SGML може здатися складним, а HTML (який, по суті спочатку був просто набором елементів) виявився недостатньо потужним для ідентифікації інформації. XML розроблявся як простий у застосуванні та зручний для розширення мову розмітки.

У XML можна створювати власні елементи, що дозволяє точно представляти фрагменти даних. Документи можна не просто розділяти на абзаци та заголовки, а й виділяти будь-які фрагменти всередині документа. Щоб це було ефективно, потрібно визначити кінцевий перелік своїх елементів та дотримуватись його. Елементи можна визначати в Опис типу документа (Document Type Definition - DTD) або в схемі, що буде коротко обговорено нижче. Коли ви освоїте та почнете використовувати XML, не бійтеся експериментувати з іменами елементів, створюючи реальні файли.

Побудова документа XML

Як уже згадувалося, файли XML складаються з тексту та розмітки. Більшість тексту міститься у елементи, у яких текст оточений тегами. Наприклад, припустимо, потрібно створити кухонну книгу у форматі XML. У нас є рецепт під назвою Ice Cream Sundae, який потрібно перетворити на XML. Щоб розмітити назву рецепта, укладемо його текст елемент, який починається і закінчується тегами. Цей елемент можна назвати recipename. Щоб відзначити початковий тег елемента, помістимо його ім'я у кутові дужки<>), ось так: . Потім введемо текст Ice Cream Sundae. Після тексту поставимо замикаючий тег, який є ім'ям елемента в кутових дужках, плюс коса риса завершення елемента (/) перед ім'ям елемента, ось так:. Ці теги утворюють елемент, який можна вводити текст і навіть інші елементи.

Імена елементів можна створювати як окремих документів, так груп документів. Відповідно до ваших вимог можна вказати правила, які повинні дотримуватися елементів. Елементи можуть бути строго спеціальними або досить загальними. Правила повинні також визначати, що можна включати в кожен елемент. Вони можуть бути строгими, вільними чи проміжними. Просто створіть елементи, що визначають ті частини вашого документа, які, на вашу думку, важливі.

Початок створення файлу XML

Першим рядком документа XML може бути декларація XML. Ця необов'язкова частина файлу визначає його як файл XML, що допоможе автоматичним інструментам і людям розпізнавати файл як XML, а не SGML або інший спосіб розмітки.

Декларація може виглядати просто як або включати версію XML ( ) і навіть кодування символів, наприклад,для Unicode. Оскільки ця декларація повинна знаходитись на самому початку файлу, якщо ви плануєте комбінувати дрібні XML-файли у більший файл, цей необов'язковий елемент краще пропустити.

Створення кореневого елемента

Початковий та замикаючий теги кореневого елемента оточують весь текст XML-документа. У файлі повинен бути тільки один кореневий елемент, і це необхідна "обкладинка" для нього. показаний фрагмент прикладу, який я тут використовую, з кореневим елементом (Рецепт). ( Повний файл XML наведено в .)

Лістинг 1. Кореневий елемент

У міру створення свого документа ви будете розміщувати текст та додаткові теги між і .

Найменування елементів

Дотримання регістру у тегах

При створенні XML регістри початкового та кінцевого тегів мають співпадати. Інакше можна отримати повідомлення про помилку під час використання або перегляду XML. Наприклад, Internet Explorer не відображає текст у разі розбіжності регістрів. Натомість він виводить повідомлення про розбіжність початкового і кінцевого тегів.

Отже, у нас є кореневий елемент . У XML спочатку вибираються імена елементів, потім на основі цих імен визначається відповідний опис DTD або схема. Імена можуть містити літери, цифри та спеціальні знаки, такі як знак підкреслення (_). Ось кілька правил про імена, які потрібно пам'ятати:

  • Прогалини в іменах елементів не допускаються.
  • Імена повинні починатися з літери, а не цифри або знака. (Після цієї першої літери можна використовувати будь-яку комбінацію з літер, цифр та допустимих символів.)
  • Регістр не має значення, але щоб уникнути плутанини, дотримуйтесь його.
Лістинг 2. Інші елементи
Ice Cream Sundae 5 хвилин

XML-документ може містити порожні теги, всередині яких нічого немає і які можуть виражатися одним тегом, а не парою з тегів, що відкриває і замикає. Наприклад, це може бути самостійний тег у стилі HTML . Він не містить жодних дочірніх елементів або тексту, тому це порожній елемент, і його можна записати як (з пробілом і знайомою замикаючою косою межею в кінці).

Вкладення елементів

Вкладення- Це розміщення елементів усередині інших елементів. Ці нові елементи називаються дочірнімиелементами, а елементи, що їх оточують, — їх батьківськимиелементами. У кореневий елемент вкладено кілька елементів. Це вкладені дочірні елементи , і Всередині елемента знаходиться кілька однакових дочірніх елементів . Додаток може робити XML-документ багаторівневим.

Типова синтаксична помилка пов'язана з вкладеністю батьківського та дочірнього елементів. Кожен дочірній елемент повинен бути повністю розташований між тегами свого батьківського елемента, що відкриває і замикає. Дочірні елементи повинні закінчуватись до початку наступного дочірнього елемента.

Приклад правильного вкладення наведено у . Теги починаються і завершуються без переплетенняз іншими тегами

Лістинг 3. Правильне вкладання елементів XML.
Ice Cream Sundae 3 chocolate syrup or chocolate fudge 1 nuts 1 cherry 5 хвилин

Додавання атрибутів

До елементів іноді додаються Атрибути. Атрибути складаються з пари ім'я-значення, де значення береться в подвійні лапки ("), ось так: type="dessert" . Атрибути дозволяють зберігати разом з елементом додаткові параметри, змінюючи значення цих параметрів від елемента до елемента в тому самому документі .

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

Лістинг 4. Наш файл XML з елементами та атрибутами
Ice Cream Sundae 5 хвилин

Можна використовувати будь-яку кількість атрибутів. Подумайте, які подробиці можна додати до вашого документа. Атрибути особливо корисні, якщо документи зберігатимуться, наприклад, за типом рецептів. Імена атрибутів можуть містити такі самі символи, як і імена елементів, з тими самими правилами виключення пробілів і початку імені з літери.

Правильно та неправильно побудований XML

Якщо ви дотримуєтеся правил, визначених у структурі, ви зможете легко створювати правильно побудований код XML. Правильний XML- Це код XML, складений з дотриманням всіх правил XML: правильне найменування елементів, вкладення, найменування атрибутів і т.п.

Залежно від того, що саме ви робите з XML, вам може знадобитися робота з правильно збудованим XML. Розглянемо наведений вище приклад сортування типу рецептів. Потрібно, щоб елементи містили атрибут type. Дуже важливо мати можливість успішно перевірити код та гарантувати постійну присутність значення цього атрибуту.

Під перевіркою (validation)розуміється перевірка структури документа відповідність встановленим нею правилам і визначення дочірніх елементів кожному за батьківського елемента. Ці правила визначаються Опис типу документа(DTD) або у схемі. Для такої перевірки потрібно створити DTD або схему, а потім надавати посилання на файл DTD або схеми у своїх XML-файлах.

Щоб дозволити перевірку, потрібно ближче до початку своїх XML-документів розмістити декларацію типу документа (DOCTYPE). Цей рядок містить посилання на DTD або схему (перелік елементів та правил), яка буде використовуватись для перевірки цього документа. Рядок DOCTYPE може бути приблизно такий, як у .

Лістинг 5. DOCTYPE

Цей приклад означає, що файл списку елементів з ім'ям filename.dtdзнаходиться у вашому комп'ютері (тобто в каталозі SYSTEM, а не в загальному каталозі PUBLIC).

Використання сутностей

Сутності (entity)можуть бути фрагментами тексту або спеціальні символи. Вони можуть вказуватися всередині або поза документом. Щоб уникнути помилок та для правильності відображення сутності, повинні бути належним чином оголошені та виражені.

Не можна вводити спеціальні символи у текст. Для використання у тексті спеціальних символів їх потрібно зробити сутністю та використовувати коди цих символів. Як сутності можна визначити фрази, такі як назва компанії, та був використовувати їх у всьому тексті. Щоб створити сутність, призначте їй ім'я та вставляйте це ім'я та вставляйте це ім'я в текст після знака амперсанда (&) та закінчуючи крапкою з комою – наприклад, (або інше ім'я). Потім вкажіть цей код у своєму рядку DOCTYPE у квадратних дужках(), як у . Цей код визначає текст, який підставляється замість сутності.

Лістинг 6. Сутність

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

Як уникнути помилок

Поки ви вчитеся створювати XML-файли, відкривайте їх у редакторі XML, щоб переконатися в їх формальній правильності та переконатися, що правила XML дотримані. Наприклад, якщо у вас є Windows® Internet Explorer®, ви можете просто відкрити свій файл XML у браузері. Якщо елементи, атрибути та текст відображаються, файл XML складений правильно. Якщо ж є помилки, ймовірно, ви щось наплутали в синтаксисі, і вам потрібно ретельно перевірити свій документ на помилки або пропуски тегів і знаків пунктуації.

Висновок

Засвоївши кілька простих правил, ви можете гнучко розробляти власні елементи XML та їх атрибути. Правила XML не складні. Набирати XML-документ також нескладно. Головне - зрозуміти, що ви хочете від документів у сенсі можливостей сортування та пошуку, а потім розробити елементи та атрибути для задоволення цих вимог.

Коли добре розумієш ціль і знаєш, як розмітити свій текст, можна створювати ефективні елементи та атрибути. З цього погляду ретельна розмітка - це все, що потрібно для створення правильно побудованого та придатного для використання документа XML.

При використанні HTML, дані, що відображаються, логічно не пов'язані з тегами, які використовуються для розмітки, тому програми-аналізатори не можуть використовувати теги для пошуку потрібних фрагментів документа. Крім цього, обмеженість набору тегів HTML ускладнює його використання для відображення спеціалізованої інформації (наприклад, математичних формул).

На зміну HTML було запропоновано мову гіпертекстової розмітки XML (Extensible Markup Language). Ця мова може використовуватися для опису граматики інших мов та контролю правильності складання документів. XML визначає порядок створення тегів, призначених для розмітки та дозволяє легко їх розширити. Таким чином, з'являється можливість визначати власні теги, що дозволяють визначати дані, що містяться в документі. При створенні структури документа, будуються зв'язки між елементами і розмітка, необхідна виконання операцій перегляду, пошуку, аналізу документа. XML можна використовувати як універсальну мову запитів до сховищ інформації. Таким чином, XML-документи можуть виступати в якості унікального способу зберігання даних, що включає засоби для розбору інформації і її представлення.

Мова XML привертає до себе багато уваги з боку розробників та користувачів Інтернету. З'являються нові мови, створені на основі XML, виникають Web-сервера, що використовують цю технологію для організації інформації, що зберігається на них. Повні специфікації XML та пов'язаних з ним мов доступні на офіційній сторінці W3C - www.w3.org

Роком народження XML можна вважати 1998, коли специфікація мови була затверджена. А почалося все з появи у 1986 році мови SGML. Хоча поняття гіпертексту було введено В.Бушем ще в 1945 році і, починаючи з 60-х років, стали з'являтися додатки, які використовують гіпертекстові дані, сплеск активності навколо цієї технології почався тоді, коли виникла реальна необхідність у механізмі об'єднання множини інформаційних ресурсів, забезпечення можливості створення, перегляду тексту. За допомогою SGML можна описувати структуровані дані, організовувати інформацію, що міститься в документах, представляти цю інформацію у стандартному форматі. Мова SGML призначена для створення інших мов розмітки, вона визначає допустимий набір тегів, їх атрибути та внутрішню структуру документа. Контроль за правильністю використання дескрипторів здійснюється за допомогою спеціального набору правил, які називаються DTD-описами, які використовуються програмою клієнта при розборі документа. До кожного класу документів визначається свій набір правил, що описують граматику відповідної мови розмітки. Але через свою складність, SGML використовувався, в основному, для опису синтаксису інших мов, найбільш відомим з яких є HTML.

HTML є спрощеною версією мови SGML. Набагато простіший і зручний, ніж SGML, мова HTML дозволяє визначати оформлення елементів документа і має обмежений набір інструкцій - тегів, з яких здійснюється процес розмітки. Інструкції HTML, в першу чергу, призначені для управління процесом виведення вмісту документа на екрані програми-клієнта і визначають цим спосіб представлення документа, але не його структуру. Як елемент гіпертекстової бази даних, що описується HTML, використовується текстовий файл, який може легко передаватися через мережу з використанням протоколу HTTP. Ця особливість, а також те, що HTML є відкритим стандартом і величезна кількість користувачів має можливість застосовувати можливості цієї мови для оформлення своїх документів, безумовно, вплинули на зростання популярності HTML і зробили його головним механізмом представлення інформації в Web

Використання гіпертекстової розбивки текстового документа в сучасних інформаційних системах багато в чому пов'язане з тим, що гіпертекст дозволяє створювати механізм нелінійного перегляду інформації. У таких системах дані подаються над вигляді безперервного потоку текстової інформації, а набором взаємозалежних компонентів, перехід якими здійснюється з допомогою гіперпосилань.

Найпопулярніша на сьогоднішній день мова гіпертекстової розмітки HTML була створена спеціально для організації інформації, розподіленої в мережі Інтернет, і є однією з ключових складових технології WWW. З використанням гіпертекстової моделі документа спосіб представлення різноманітних інформаційних ресурсів у мережі став більш упорядкованим, а користувачі отримали зручний механізм пошуку та перегляду потрібної інформації.

Проте сучасні додатки потребують у мові представлення даних на екрані клієнта, а й у механізмі, що дозволяє визначати структуру документа, описувати які у ньому елементи. HTML має нескладний набір команд і успішно справляється із завданням опису гіпертекстової інформації, що відображається на екрані браузером. Однак дані, що відображаються, не пов'язані з тими тегами, які використовуються для форматування, тому у програм-аналізаторів немає можливості використовувати теги HTML для пошуку потрібних нам фрагментів документа. Тобто. зустрівши, наприклад, такий опис

rose,

програма перегляду знатиме, яким кольором відобразити текст, що міститься всередині тегів і, але їй абсолютно байдуже, де документа зустрівся цей тег, у яких інші теги укладено поточний фрагмент, чи існують вкладені у нього фрагменти, чи правильно побудовані відносини між об'єктами. Така "байдужість" до структури документа призводить до того, що пошук або аналіз інформації всередині нього нічим не відрізнятиметься від роботи з суцільним, не розбитим на елементи текстовим файлом. А це, як відомо, не найефективніший спосіб роботи з інформацією.

Іншим істотним недоліком HTML можна назвати обмеженість набору його тегів. DTD- правила для HTML визначають фіксований набір дескрипторів і тому розробник не має можливості вводити власні, спеціальні теги.

Підсумовуючи всього сказаного, можна стверджувати, що HTML не в усьому задовольняє повною мірою вимогам, що висуваються розробниками до мов подібного роду. HTML доповнює мову гіпертекстової розмітки XML, потужну, гнучкий, та зручну мову. У чому полягає його гідності?

Що таке XML?

Термін XML означає особливий різновид гіпертекстових документів. Чим же погані звичайні текстові документи і що особливого в XML-документах?

В будь-якому текстовому документіможна написати що завгодно і як завгодно, наприклад, можна поставити між словами одну прогалину, а між іншими - два пробіли. Можна виділяти абзац червоним рядком із трьох прогалин, а іноді залишати порожній рядок між сусідніми абзацами. Можна написати заголовок документа у першому рядку, а можна почати писати документ із прізвища автора. Але якщо документ необхідно опублікувати, то його доведеться переробляти – оформляти одноманітним способом абзаци, виділяти із загальної розповіді заголовок порожнім рядком, між заголовком та першим абзацом вказувати прізвище автора та коротку анотацію тощо. Одним словом виникне потреба оформити документ деяким стандартним для цього видання способом. А якщо потрібно опублікувати цей документ в іншому місці, потрібно знову щось змінювати і переробляти. Виявляється вихід є – на допомогу прийде XML!

Фактично XML – це спосіб розмітки документів, призначений для формування у документах будь-якої структури та визначення відносин між різними елементами цієї структури. Для створення такої розмітки є спеціальні інструкції, звані тегами. Теги мають між символами< и >. Завдяки наявності тегів стає можливою уніфікована автоматична обробка та форматування XML-документів. Завдяки XML вдається контролювати правильність даних, що зберігаються в документах, а також встановити єдиний стандарт на структуру документів, в яких можуть бути довільні дані. XML незамінний при побудові складних інформаційних систем, у яких дуже важливо питання обміну інформацією між різними споживачами. Завдяки XML можна позбавитися багатьох проблем, пов'язаних з несумісністю використовуваних різними компонентами.

Приклад типового XML-документу

ПРАЙМ-ТАС

</p><p>Перший серійний літак "Ту-214" виробництва КАПО</p><p>здійснив перший випробувальний політ</p><p>літака Ту-214, випущений у серійному виконанні</p><p>на Казанському авіаційно-виробничому об'єднанні</p><p>/КАПО/, здійснив перший випробувальний політ. Про</p><p>ПРАЙМ-ТАСС повідомили у Фінансовій лізинговій</p><p>компанії /ФЛК/.</p><p>Літак виготовлений для хабарівської авіакомпанії</p><p>"Дальавіа" в рамках угоди, укладеної у 2000</p><p>року між "Дальавіа" та ФЛК, що передбачає передачу в</p><p>лізинг двох Ту-214, що виготовляються на КАПО. Ту-214</p><p>призначений для перевезення 164 пасажирів на відстань</p><p>7,2 тис км на маршрутах Москва-Хабаровськ, а також до Кореї</p><p>Загальні витрати на підготовку виробництва літака склали</p><p>1,2 млрд руб. З бюджету країни на ці цілі було виділено</p><p>всього 1,5 млн руб. Підготовка до виробництва велася за рахунок</p><p>коштів КАПО та бюджету Татарстану, а також повного</p><p>звільнення підприємства від республіканського та місцевих</p><p>податків. Із республіканського бюджету на сертифікацію</p><p>літака було виділено 97 млн ​​руб, а також 275 млн руб</p><p>для запуску механізму лізингу</p><p>Попередня вартість Ту-214 становить 22-25 млн дол.</p><p></InfoItem></p><p></InfoPacket></p> </td> </tr></table><p>Перші два рядки в цьому прикладі повинні бути присутніми. Перший рядок означає, що цей документ є XML-документом, а другий вказує на спеціальний ресурс <u>http://xml.prime-tass.ru/dtd/UIF.dtd</u>, В якому містяться правила оформлення даного XML-документа). Більш детальну інформацію за цими "чарівними словами" і не тільки можна отримати на сайті <u>http://www.w3.org</u>.</p><p>Інші рядки мають явно виражену ієрархічну структуру, в якій є один кореневий тег <b><InfoPacket> </b>а інші теги вкладені в нього. Всі ці теги збігаються парами, наприклад, <b><InfoPacket> </b>і <b></InfoPacket> </b>, або <b><Text> </b>і <b></Text> </b>. Перші - позначають тег, що відкривається, другі - парний йому закривається. У XML-документі кожен тег, що відкривається, повинен мати парний йому закривається.</p><p>Тег <b><InfoPacket> </b>є найголовнішим тегом - коренем ієрархічної структури і призначений зберігання вкладених у нього інших тегів. Таким чином, він являє собою своєрідний "конверт" або "обгортку" - інформаційний пакет. У нього вкладені теги <b><Source> </b>, <b><Time> </b>і <b><InfoItem> </b>. Тег <b><Source> </b>містить відомості про джерело інформації, що міститься в даному інформаційному пакеті ("адреса відправника"). У тезі <b><Time> </b>вказано час створення інформаційного пакета (час заклеювання конверта). І, нарешті, у тезі <b><InfoItem> </b>знаходиться власне "лист" - фактичне смислове наповнення інформаційного пакета. Що ж міститься у цьому "листі"? У ньому є теги <b><Time> </b>, <b><Title> </b>і <b><Text> </b>. У тезі <b><Time> </b>, вкладеному в тег <b><InfoItem> </b>зазначено коли наш " лист " було написано, тобто. час написання вмісту <b><InfoItem> </b>. Не слід плутати цей час з моментом "заклеювання конверта" (створенням інформаційного пакету <b><InfoPacket> </b>). Зазвичай спочатку пишуть "лист", а потім "заклеюють конверт" із ним. До речі, якщо одержувачів кілька, то доведеться заклеїти кілька конвертів з однаковими копіями листа. Або можлива ситуація, коли потрібно покласти в один конверт кілька листів для одного одержувача. В цьому випадку доведеться помістити всередині тега <b><InfoPacket> </b>кілька тегів <b><InfoItem> </b>. Крім тега <b><Time> </b>в <b><InfoItem> </b>вкладений тег <b><Title> </b>, В якому написано заголовок документа або "листа", якщо продовжити нашу аналогію. І, нарешті, лишився тег <b><Text> </b>, який кілька разів зустрічається всередині тегу <b><InfoItem> </b>. Цей тег <b><Text> </b>означає просто абзаци документа.</p><p>Залишилося тільки сказати, що означають і навіщо потрібні записи, типу <b>type="datetime"</b>або <b>type="string"</b>всередині назв тегів <b><Source> </b>, <b><Time> </b>і <b><Title> </b>і чому їх немає у тегах <b><Text> </b>. Такі записи в XML називаються атрибутами тегів. В <a href="/hard-drive/hardware-raid-array-separate-cases-of-recovery/">даному випадку</a>ми маємо один атрибут <b>type</b>, який набуває значення <b>"datetime"</b>і <b>"string"</b>. Значення атрибутів у XML завжди укладаються в лапки. Атрибут <b>type</b>необхідний у тому, щоб точно вказати як слід інтерпретувати послідовність символів, укладену всередині тега з цим атрибутом. Значення <b>"datetime"</b>означає, що значення тега потрібно інтерпретувати як дату та час, а значення <b>"string"</b>- як звичайний рядок. У тега <b><Text> </b>атрибут <b>type</b>відсутня, т.к. за змістом цього тега і так ясно, що в цьому тегу міститься текстовий рядок.</p><p>XML - це мова розмітки, що описує цілий клас об'єктів даних, званих XML-документами. Ця мова використовується як засіб для опису граматики інших мов та контролю за правильністю складання документів. Тобто. XML не містить жодних тегів, призначених для розмітки, він просто визначає порядок їх створення. Таким чином, якщо, наприклад, ми вважаємо, що для позначення елемента <i>rose</i>у документі необхідно використовувати тег <i><flower> </i>;, то XML дозволяє вільно використовувати тег, що визначається нами, і ми можемо включати в документ фрагменти, подібні до наступного:</p><p><flower>rose</flower></p><p>Набір тегів може бути легко розширений. Якщо, припустимо, ми хочемо також вказати, що опис квітки має за змістом йти всередині опису оранжереї, в якій він цвіте, то просто задаємо нові теги і вибираємо порядок їхнього слідування:</p><p><conservatory></p><p><flower>rose</flower></p><p></conservatory></p><p>Якщо ми хочемо посадити туди ще кілька квіточок, то маємо внести такі зміни:</p><p><conservatory></p><p><flower>rose</flower></p><p><flower>tulip</flower></p><p><flower>cactus</flower></p><p></conservatory></p><p>Як видно, процес створення XML документа дуже простий і вимагає від нас лише базових знань HTML і розуміння тих завдань, які ми хочемо виконати, використовуючи XML як мову розмітки. Таким чином, у розробників з'являється унікальна можливість визначати власні команди, що дозволяють їм найефективніше визначати дані, що містяться у документі. Автор документа створює його структуру, будує необхідні зв'язки між елементами, використовуючи ті команди, які задовольняють його вимогам і досягає такого типу розмітки, яке необхідне для виконання операцій перегляду, пошуку, аналізу документа.</p><p>Ще однією з очевидних переваг XML є можливість використання його як універсальної мови запитів до сховищ інформації. Сьогодні у глибинах W3C перебуває в розгляді робочий варіант стандарту XML-QL(чи XQL), який, можливо, у майбутньому становитиме серйозну конкуренцію SQL. Крім того, XML-документи можуть виступати в якості унікального способу зберігання даних, який включає одночасно засоби для розбору інформації і представлення її на стороні клієнта. У цій галузі одним з перспективних напрямків є інтеграція Java та XML - технологій, що дозволяє використовувати потужність обох технологій при побудові машинно-незалежних додатків, які використовують, крім того, універсальний формат даних під час обміну інформацією.</p><p>XML дозволяє також здійснювати контроль за коректністю даних, що зберігаються в документах, проводити перевірки ієрархічних співвідношень усередині документа та встановлювати єдиний стандарт на структуру документів, вмістом яких можуть бути різні дані. Це означає, що його можна використовувати при побудові складних інформаційних систем, у яких дуже важливим є питання обміну інформацією між додатками, що працюють в одній системі. Створюючи структуру механізму обміну інформації на самому початку роботи над проектом, менеджер може позбавити себе в майбутньому багатьох проблем, пов'язаних з несумісністю використовуваних різними компонентами системи форматів даних.</p><p>Також однією з переваг XML є те, що програми-обробники XML-документів не складні і вже сьогодні з'явилися і вільно поширюються різноманітні програмні продукти, призначені для роботи з XML-документами. XML підтримується сьогодні в Microsoft Internet Explorer 4/0 та в бета-версіях IE5. Було заявлено про його підтримку у наступних версіях Netscape Communicator, СУБД Oracle, DB-2, у додатках MS-Office. Все це дає підстави припускати, що, швидше за все, у найближчому майбутньому XML стане основною мовою обміну інформації для інформаційних систем, замінивши собою HTML. На основі XML вже сьогодні створено такі відомі спеціалізовані мови розмітки, як SMIL, CDF, MathML, XSL, та список робочих проектів нових мов, що знаходяться на розгляді W3C, постійно поповнюється.</p> <p>XML - дуже популярний та гнучкий формат у наш час. Кожен програміст повинен розуміти його, це просто must have. Багато технологій зав'язані сьогодні активно його використовують, причому сучасні серед них.</p><h2>Вступ</h2>Здрастуйте, дорогі читачі моєї статті. Відразу хочу сказати, що це лише перша стаття у моєму циклі з трьох статей. Основна мета всього циклу – присвятити кожного читача в XML і дати, якщо не повне роз'яснення та розуміння, то хоча б хороший такий поштовх до нього, пояснивши основні моменти та речі. <b>Весь цикл буде для однієї номінації - "Увага до деталей"</b>, А поділ на 3 статті зроблено для того, щоб вміщатися в ліміт символів у постах та розділити велику кількість матеріалу на більш маленькі порції для більшого розуміння. Перша стаття буде присвячена самому XML і що це таке, а також одному із способів складання схеми для XML файлів – DTD. Для початку, хотілося б висловити невелику передмову для тих, хто взагалі ще не знайомий з XML: не треба лякатися. XML не дуже складний і з ним потрібно розібратися будь-якому програмісту, тому що це дуже гнучкий, ефективний і популярний формат файлів на сьогодні для зберігання різноманітної інформації, яку ви тільки захочете. XML використовується в Ant, Maven, Spring. Будь-якому програмісту потрібне знання XML. Тепер, коли ви зібралися силами та мотивацією, давайте приступати до вивчення. Весь матеріал я намагатимуся викласти максимально просто, зібравши тільки найважливіше і не вдаватися в нетрі. <h3>XML</h3>Для більш чіткого пояснення, правильніше візуалізувати XML прикладом.< ? xml version= "1.0" encoding= "UTF-8" ? > <span>< company> </span> <span>< name> </span> IT- Heaven< / name> <span>< offices> </span> < office floor= "1" room= "1" > <span>< employees> </span> <span>< employee> </span> <span>< name> </span> Maksim< / name> <span>< job> </span> Middle Software Developer< / job> < / employee> <span>< employee> </span> <span>< name> </span> Ivan< / name> <span>< job> </span> Junior Software Developer< / job> < / employee> <span>< employee> </span> <span>< name> </span> Franklin< / name> <span>< job> </span> Junior Software Developer< / job> < / employee> < / employees> < / office> < office floor= "1" room= "2" > <span>< employees> </span> <span>< employee> </span> <span>< name> </span> Herald< / name> <span>< job> </span> Middle Software Developer< / job> < / employee> <span>< employee> </span> <span>< name> </span> Adam< / name> <span>< job> </span> Middle Software Developer< / job> < / employee> <span>< employee> </span> <span>< name> </span> Leroy< / name> <span>< job> </span> Junior Software Developer< / job> < / employee> < / employees> < / office> < / offices> < / company>HTML і XML схожі синтаксисом, оскільки вони спільний батько – SGML. Однак, в HTML є тільки фіксовані теги конкретного стандарту, в той час як у XML ви можете створювати власні теги, атрибути і, в цілому, робити все, що захочете, щоб зберігати дані так, як вам буде зручно. По суті, XML файли може прочитати будь-яка людина, яка знає англійську мову. Зобразити цей приклад можна за допомогою дерева. <b>Корінь дерева</b>- Company. Він же - кореневий (рут) елемент, від якого йдуть всі інші елементи. <i>У кожному XML файлі може бути тільки один рут елемент.</i>Він повинен оголошуватися після <i>декларації xml файлу</i>(перший рядок у прикладі) і вміщати у собі всі інші елементи. Трохи про декларацію: вона <i>обов'язкова</i>та потрібна для ідентифікації документа як XML. У неї є три псевдо-атрибути (спеціальні наперед визначені атрибути): version (за стандартом 1.0), encoding (кодування) та standalone (автономність: якщо yes і до документа підключаються) <a href="/flash-drives/power-for-external-hard-drives-scheme-for-wiring-sata-power-connector-and-power-connector-for-hard-drive-sata/">зовнішні схеми</a>, то буде помилка, за замовчуванням – no). <b>Елементи</b>– це сутності, які зберігають дані за допомогою інших елементів та атрибутів. <b>Атрибути</b>– це <a href="/social-networks-and-email/svyaz-v-oae-mts-dopolnitelnaya-informaciya-ob-oae/">додаткова інформація</a>елемент, який вказується при додаванні елемента. Якщо перевести пояснення на ООП-полі, то можна навести такий приклад: у нас є машина, у кожної машини є характеристики (колір, місткість, марка та інше) – це атрибути, і є сутності, які всередині машини: двері, вікна, двигун кермо - це інші елементи. Зберігати властивості можна як окремими елементами, так і атрибутами в залежності від вашого бажання. Як ніяк, XML - дуже гнучкий формат зберігання інформації про що-небудь. Після пояснень нам достатньо розібрати приклад вище, щоб все стало на свої місця. У прикладі ми описали просту структуру компанії: є компанія, яка має ім'я та офіси, а в офісах є співробітники. Елементи Employees і Offices – елементи-обертки – вони служать для того, щоб зібрати в собі елементи одного виду, по суті, з'єднавши їх в одну множину для зручності їх обробки. На окрему увагу заслуговують floor і room. Це - атрибути офісу (поверх і номер), тобто його властивості. Якби ми мали елемент «картинка», можна було б передавати її розміри. Ви можете помітити, що компанія не має атрибута name, але є елемент name. Просто ви можете описувати структури так, як захочете. Ніхто не зобов'язує вас усі властивості елементів записувати тільки в атрибути, ви можете використовувати і просто елементи та записувати в них якісь дані. Наприклад, ми можемо записувати ім'я та посаду наших працівників як атрибути:< ? xml version= "1.0" encoding= "UTF-8" ? > <span>< company> </span> <span>< name> </span> IT- Heaven< / name> <span>< offices> </span> < office floor= "1" room= "1" > <span>< employees> </span> < employee name= "Maksim" job= "Middle Software Developer" > < / employee> < employee name= "Ivan" job= "Junior Software Developer" > < / employee> < employee name= "Franklin" job= "Junior Software Developer" > < / employee> < / employees> < / office> < office floor= "1" room= "2" > <span>< employees> </span> < employee name= "Herald" job= "Middle Software Developer" > < / employee> < employee name= "Adam" job= "Middle Software Developer" > < / employee> < employee name= "Leroy" job= "Junior Software Developer" > < / employee> < / employees> < / office> < / offices> < / company>Як бачите, тепер ім'я та посада кожного працівника – це його атрибути. І можна побачити, що всередині сутності (тега) employee нічого немає, всі елементи employee – порожні. Тоді можна зробити employee порожнім елементом – закрити його одразу після оголошення атрибутів. Це робиться досить просто, досить просто поставити слеш:< ? xml version= "1.0" encoding= "UTF-8" ? > <span>< company> </span> <span>< name> </span> IT- Heaven< / name> <span>< offices> </span> < office floor= "1" room= "1" > <span>< employees> </span> < employee name= "Maksim" job= "Middle Software Developer" / > < employee name= "Ivan" job= "Junior Software Developer" / > < employee name= "Franklin" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > <span>< employees> </span> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>Як ви можете помітити, закривши порожні елементи, ми зберегли всю цілісність інформації і набагато скоротили запис, зробивши інформацію стислішою і читабельнішою. Для того, щоб додати <i>коментар</i>(текст, який буде пропускатися при парсингу файлу) в XML є наступний синтаксис:< ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- >І остання конструкція – це <i><u>CDATA</u> </i>, означає «символьні дані» Завдяки даній конструкції можна записувати текст, який не буде інтерпретуватися як розмітка XML. Це корисно, якщо всередині файлу XML у вас є сутність, яка зберігає в інформації XML розмітку. Приклад:< ? xml version= "1.0" encoding= "UTF-8" ? > <span>< bean> </span> <span>< information> </span> < ! [ CDATA[ <span>< name> </span> Ivan< / name> <span>< age> </span> 26 < / age> ] ] > < / information> < / bean>Особливість XML в тому, що ви можете розширювати його так, як захочете використовувати свої елементи, свої атрибути і структурувати його за своїм бажанням. Ви можете використовувати для зберігання даних як атрибути, так і елементи (як це було показано на прикладі раніше). Однак потрібно розуміти, що вигадувати свої елементи та атрибути на ходу і як ви захочете ви можете, але що, якщо ви працюватимете на проекті, де інший програміст захоче перенести елемент name в атрибути, а у вас вся логіка програми написана так, щоб name був елементом? Як створити свої власні правила того, які елементи повинні бути, які атрибути у них є й інші речі, щоб можна було проводити валідацію XML файлів і бути впевненим, що правила стануть стандартними у вашому проекті і ніхто їх порушувати не буде? Для того, щоб написати всі правила вашої власної розмітки XML, є спеціальні засоби. Найвідоміші: DTD та XML Schema. У цій статті буде лише про перше. <h2>DTD</h2>DTD створено для того, щоб описувати типи документів. DTD вже застаріває і від нього активно відмовляються в XML, проте ще багато XML файлів використовують саме DTD і, в цілому, його корисно розуміти. <b>DTD – це технологія валідації XML-документів</b>. DTD оголошує конкретні правила для типу документа: його елементи, які елементи можуть бути всередині елемента, атрибути, обов'язкові вони чи ні, кількість їх повторень, а також сутності (Entity). За аналогією з XML, для більш чіткого пояснення DTD можна візуалізувати прикладом.< ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" >Ось такий простий приклад у нас є. В даному прикладі, ми оголосили всю нашу ієрархію з прикладу XML: працівник, працівники, офіс, офіси, ім'я, компанія. Для створення DTD файлів служать три основні конструкції, щоб описувати будь-які XML файли: ELEMENT (для опису елементів), ATTLIST (для опису атрибутів для елементів) та ENTITY (для підстановки тексту скороченими формами). <b>ELEMENT</b>Служить для опису елемента. Елементи, які можна використовувати всередині описаного елемента, перераховуються у дужках як списку. Можна використовувати квантифікатори для вказівки кількості (вони аналогічні квантифікаторами з регулярних виразів): + значить 1+ * значить 0+ ? значить 0 АБО 1 <b>Якщо квантифікаторів не було додано, то вважається, що має бути лише один елемент.</b>Якби нам потрібен був один із групи елементів, можна було б написати так:< ! ELEMENT company ((name | offices) ) >Тоді вибирався б один з елементів: name або offices, але якби всередині company було відразу два їх, то валідація не проходила. Також можна помітити, що у employee є слово EMPTY – це означає, що елемент має бути порожнім. Є ще ANY – будь-які елементи. #PCDATA - Текстові дані. <b>ATTLIST</b>Додасть атрибути до елементів. Після ATTLIST слід назва потрібного елемента, а після словник виду «назва атрибута – тип атрибута», а наприкінці можна додати #IMPLIED (не обов'язковий) або #REQUIRED (обов'язковий). CDATA – текстові дані. Є й інші типи, проте всі вони малі. <b>ENTITY</b> ENTITY служить для оголошення скорочень та тексту, який на них підставлятиметься. По суті ми просто зможемо використовувати в XML замість повного тексту просто назву сутності зі знаком & перед і; після. Наприклад: щоб відрізняти розмітку в HTML і просто символи, ліву кутову скоби часто екранують за допомогою lt; тільки потрібно ще виставити & перед lt. Тоді ми використовуватимемо не розмітку, а просто символ< . Как вы можете видеть, все довольно просто: объявляете элементы, объясняете, какие элементы объявленные элементы способны содержать, добавление атрибутов этим элементам и, по желанию, можете добавить сущности, чтобы сокращать какие-то записи. И тут вы должны были бы спросить: а как использовать наши правила в нашем XML файле? Ведь мы просто объявили правила, но мы не использовали их в XML. <b>Є два способи використовувати їх у XML:</b> <i>1. Впровадження – написання DTD правил усередині самого XML файлу, досить просто написати кореневий елемент після ключового слова DOCTYPE та укласти наш DTD файл усередині квадратних дужок.</i> < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company [ < ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" > ] > <span>< company> </span> <span>< name> </span> IT- Heaven< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > <span>< offices> </span> < office floor= "1" room= "1" > <span>< employees> </span> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > <span>< employees> </span> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company> <i>2. Імпорт - ми записуємо всі наші правила в окремий DTD файл, після чого в XML файлі використовуємо DOCTYPE-конструкцію з першого способу, тільки замість квадратних дужок потрібно написати SYSTEM і вказати абсолютний або відносний до поточного розташування файлу шлях.</i> < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company SYSTEM "dtd_example1.dtd" > <span>< company> </span> <span>< name> </span> IT- Heaven< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > <span>< offices> </span> < office floor= "1" room= "1" > <span>< employees> </span> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > <span>< employees> </span> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>Також можна використовувати ключове слово PUBLIC замість SYSTEM, проте воно навряд чи стане вам у нагоді. Якщо цікаво, то почитати про нього (і про SYSTEM теж) можна докладно тут: посилання . Тепер ми не можемо використовувати інші елементи без їхнього оголошення в DTD, а весь XML підпорядковується нашим правилам. Можете спробувати записати <a href="/flash-drives/otreshennyi-static-php-p-staticheskie-chleny-klassa-ne-dai-im-zagubit-tvoi-kod/">даний код</a> IntelliJ IDEA в окремий файл з розширенням.xml і спробувати додати якісь нові елементи або видалити елемент з нашого DTD і помітити, як IDE буде вказувати вам на помилку. Однак, DTD має свої мінуси: <ul><li>Він має власний синтаксис, відмінний від синтаксису xml.</li> <li>У DTD немає перевірки типів даних, а містити він може лише рядки.</li> <li>У DTD немає простору імен.</li> </ul>Про проблему власного синтаксису: ви повинні розбиратися у двох синтаксисах відразу: у XML та DTD синтаксисі. Вони різні, і це може змушувати вас плутатися. Так само, через це складніше відстежувати помилки у величезних XML файлах у поєднанні з такими ж DTD схемами. Якщо у вас щось не запрацювало, доводиться перевіряти безліч тексту різних синтаксисів. Це як читати одночасно дві книжки: російською та англійською. І якщо знання в однієї мови у вас гірше, то розуміти текст буде так само складно. Про проблему перевірки типів даних: атрибути в DTD дійсно мають <a href="/total/nokia-lumiya-625-4g-information-about-other-important-connection-technologies-supported-by-the-device/">різні типи</a>, але всі вони, по суті, є рядковими уявленнями чогось, списками або посиланнями. Однак, ви не можете вимагати лише числа, і, тим більше, позитивні чи негативні. А про об'єктні типи взагалі можете забути. Остання проблема буде обговорюватися вже в наступній статті, яка буде присвячена просторам імен та XML схемам, тому що обговорення її тут безглуздо. Дякуємо всім за увагу, я зробив велику роботу і продовжую її робити, щоб вчасно закінчити весь цикл статей. По суті, мені залишилося розібратися з XML схемами і придумати їхнє пояснення більш ясними словами, щоб закінчити 2-ю статтю. Її половина вже зроблена, так що можете очікувати її найближчим часом. Остання стаття буде повністю присвячена роботі з <a href="/social-networks-and-email/kakoi-programmoi-otkryt-xml-programmy-dlya-otkrytiya-xml-faila-chem-otkryt-xml/">XML файлами</a>засобами Java. Успіхів усім і успіхів у програмуванні:) Наступна стаття:<script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class='yarpp-related'><div class="yarpp-related-title">Схожі статті</div><div class="yarpp-thumbnails-horizontal"> <a class='yarpp-thumbnail' href='/hard-drive/nastroika-bios-dlya-ustanovki-windows-s-zagruzochnogo-diska-nastraivaem-bios/' title='Настроюємо BIOS на комп'ютері Дивитись як правильно налаштувати біос вінди хр'> <img width="120" height="120" src="/uploads/df906d5696e485d30edbb7e01754d2ca.jpg" class="attachment-yarpp-thumbnail size-yarpp-thumbnail wp-post-image" alt="Настроюємо BIOS на комп'ютері Дивитись як правильно налаштувати біос вінди хр" / loading=lazy loading=lazy><span class="yarpp-thumbnail-title">Настроюємо BIOS на комп'ютері Дивитись як правильно налаштувати біос вінди хр</span></a> <a class='yarpp-thumbnail' href='/general/telefonnuyu-set-ofisa-i-mobilnuyu-svyaz-kak-podklyuchit-ip-telefoniyu-dlya-ofisa/' title='Як підключити IP-телефонію для офісу та вибрати ефектний номер?'> <img width="120" height="120" src="/uploads/e1aa12627bd4d231317655193007a9e9.jpg" class="attachment-yarpp-thumbnail size-yarpp-thumbnail wp-post-image" alt="Як підключити IP-телефонію для офісу та вибрати ефектний номер?" / loading=lazy loading=lazy><span class="yarpp-thumbnail-title">Як підключити IP-телефонію для офісу та вибрати ефектний номер?</span></a> <a class='yarpp-thumbnail' href='/apple/kak-sozdat-tochku-podklyucheniya-wifi-na-noutbuke-noutbuk-kak-tochka-dostupa-wifi/' title='Ноутбук як точка доступу WiFi'> <img width="120" height="120" src="/uploads/c0ba23ac545a6d5489c47ce12bf3bf74.jpg" class="attachment-yarpp-thumbnail size-yarpp-thumbnail wp-post-image" alt="Ноутбук як точка доступу WiFi" / loading=lazy loading=lazy><span class="yarpp-thumbnail-title">Ноутбук як точка доступу WiFi</span></a> <a class='yarpp-thumbnail' href='/hard-disk/chasto-zavisaet-kompyuter-windows-7-kompyuter-zavisaet-chto/' title='Комп'ютер зависає - що робити?'> <img width="120" height="120" src="/uploads/ea2a2baffb2b7845f963730cddf7a02b.jpg" class="attachment-yarpp-thumbnail size-yarpp-thumbnail wp-post-image" alt="Комп'ютер зависає - що робити?" / loading=lazy loading=lazy><span class="yarpp-thumbnail-title">Комп'ютер зависає - що робити?</span></a> </div></div> </div> <div class="sidebar"> <div class="categories-menu"> <ul> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/windows/" >Windows</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/browsers/" >Браузери</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/social-networks/" >Соціальні мережі</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/android/" >Android</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/apple/" >Apple</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/hard-disk/" >Жорсткий диск</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/flash-drives/" >Флеш-накопичувачі</a></div> </div> </li> <li> <div class="title"> <div class="icon">   </div> <div class="name"> <a href="/category/miscellaneous/" >Різне</a></div> </div> </li> </ul> </div> <div class="sidebar-ad2" style="text-align:center;"> </div> </div> </div><a href="#" class="back-to-top"><i class="back-to-top-icon"></i></a> <div id="footer"> <div class="wrap"> <div class="copyright"> <p>© 2022 hddrecover.ru.</p> <p>Професійне відновлення даних</p> </div> <div class="menu"> <ul> <li><a href="" >Про сайт</a></li> <li><a href="/feedback/" >Контакти</a></li> </ul> </div> </div> </div> <link rel='stylesheet' id='fvm-footer-0-css' href='//hddrecover.ru/wp-content/uploads/fvm/cache/footer-b7b91b94-1515032323.min.css' type='text/css' media='all' /> <script type="text/javascript" src="//hddrecover.ru/wp-content/uploads/fvm/cache/footer-e76513d9-1515032323.min.js" defer></script> </body></html>