Language tools resources реферат

Обновлено: 05.07.2024

Писать правильно без ошибок на родном языке - это признак воспитанного человека, который сам уважает свой родной язык и тем самым заставляет уважать других. Уметь грамотно изъяснять свои мысли и правильно оформлять их при письме - это мощное орудие, достаточно вспомнить судьбу графа Монте-Кристо, ставшего узником замка Иф по ловко составленному письму-доносу. Воистину, в умелых руках перо посильнее пушек.

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

Проверка орфографии доступна линуксоидам во множестве программ и красная подсвечивающая линия часто выдаёт слова с ошибками, которые можно и нужно вдумчиво исправлять.

Но одной орфографией русский язык не заканчивается. Есть open source проект LanguageTool в рамках которого для русского языка доступны проверки на грамматику, пунктуацию. Так же проект поможет с типографикой (оформление текстов) и стилями. На сегодняшний день доступно более 160 правил.

LanguageTool не поможет, к сожалению, с орфографией. Было бы просто замечательно в одном продукте получить всё и сразу, но увы и ах.

LanguageTool уже доступен для таких приложений как:

Вам помогут с расширением LT сайты:

Для интеграции с другими программами предусмотрен механизм, описанный в разделе Using LanguageTool from other applications.

Language Tool

Скачайте LanguageTool.jnlp и сохраните у себя в домашней папке.

Создайте на Рабочем Столе файл lt.desktop с содержимым, но измените путь к jnlp на свой.

[Desktop Entry]
Name=LT
Name[ru]=LT
Exec=/usr/bin/javaws -nosecurity /home/vasilisc/bin/LT/LanguageTool.jnlp
Icon=openjdk-6.xpm
Terminal=false
Type=Application
OnlyShowIn=Unity;
Categories=System;
Version=1.0

Дайте права исполнения на файл lt.desktop.

Мы создали описательный файлик desktop, который можно запускать с Рабочего Стола и/или перетащить на Launcher Unity.

Запуск LT в lt.desktop осуществляется с помощью инструкции /usr/bin/javaws -nosecurity /home/vasilisc/путь/к/LT/LanguageTool.jnlp . JavaWS из пакета Open Java отлично выполняет свою роль и не нужно мучаться с установкой Oracle Sun Java, которая исчезла из стандартных репозиториев из-за не понятной лицензионной политики Oracle.

Если выйдет новая версия LanguageTool или обновятся, дополнятся правила, то вы автоматически их получите и тем самым обновите свой LanguageTool. Вы не устанавливаете LanguageTool каким-то не правильным способом в обход стандартных репозиториев, так что повода для паники нет.

JNLP это сетевой способ доставки и работы Java приложений и не более того. Для профилактики делайте периодически sudo updatedb && locate -i LanguageTool | grep `whoami` . Команда найдёт в вашей домашней папке кэши LanguageTool, которые можно удалять изредка, для освежающего эффекта и экономии места. JNLP всё равно доставит последнюю актуальную версию, а от старья вы к этому времени избавитесь.

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

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

Выбранный для просмотра документ исследовательский проект.docx

Муниципальное общеобразовательное учреждение

средняя общеобразовательная школа №9

городской округ Павловский Посад Московской области

IV Муниципальная конференция молодых исследователей

“ The usage of modern Internet resources for improving pupils' English language skills”

Седова Светлана Сергеевна

Руководитель:

Щеглова Елена Александровна,

учитель английского языка

г. Павловский Посад

Оглавление ( Contents ).

1. Введение ( Introduction ).

2. Основная часть ( Main body ).

3. Заключение ( Conclusion ).

1. Введение ( Introduction).

Nowadays more and more people are realizing that every educated person should know a foreign language . English is number 1 in the international communication and the Internet is a tool which can help us to study English.

Learning a foreign language is not an easy thing. It is a long and slow process that takes a lot of time and patience.

At school we learn English in peer groups. Classroom lessons usually have a strict lesson plan.

It’s not bad, but sometimes students may want some more freedom in the process of learning. And in my project I want to present the way of solving this problem.

Not so long a new term “e-learning” appeared in the modern world. The UNESCO experts gave to the term the following definition: e-learning - it’s a self-depending learning through the Internet and multimedia.

So, today the Internet offers many wonderful educational resources.

The aim and the objectives.

The aim of my project was to find the most useful and interesting modern recourses of the Internet for improving the English language skills.

- To find out the advantages of using the Internet resources;

- To make up a list of the best Internet resources for improving the English language skills;

- To conduct a survey of students of the 7th form in School №2 of Pavlovsky Posad to identify their awareness of the Internet resources that help us improve the English language skills.

Research methods:

1. Theoretical: the theoretical analysis of literature and other sources of information.
2. Empirical: testing, comparison, survey.

2. Основная часть (Main body).

The advantages of using the Internet resources .

Using the Internet resources has some advantages:

1. It’s open for everybody. You can find rather cheap or absolutely free resources.

2. You can choose the method that works best for you and that you enjoy the most.

3. You can study at any time you like and at any place you like.

4. Your pace may be individual, suitable for you. There is no necessity to wait for classmates to catch up and if you don’t understand something, you can spend as much time on it as you need.

A list of the best Internet resources for improving the English language skills.

I have explored the appropriate forums, sites, articles. I have practiced some resources. And I’m ready to share my experience with other students learning English.

If you want to hear an English speaking teacher, you can go to a video-sharing website “YouTube” , section “ EnglishLessons4U” . All the teachers there are quiet charismatic and intelligent. The lessons are interesting and informative.

“ Puzzle English” is a YouTube channel. It contains a great amount of video and audio lessons. There you can train your pronunciation, listening and grammar skills. The characteristic feature of the resource is its special tasks. For example, you have to listen to a sentence and then do a jigsaw puzzle of mixed words. You also can make up your personal dictionary of unknown words and then train them in exercises.

“ BBC learn English” is also a famous video channel. The videos here are suitable for those who have an Intermediate level or a higher one. The videos are up-to-date and very exciting. For example, if you have never heard what a “grass phone” is, go to this channel and get to know. In the series of videos about pronunciation you’ll know how to pronounce different sounds.

People from all around the world learn English with “ British Council” . You can choose a section for kids or for teens. There are a lot of interactive games and exercises. The tasks are interesting and creative.

“ LinguaLeo” is a Russian educational online platform. It offers a test to determine your language skill level. Then it develops a personal training program for you. Each user can choose a real-life content that he or she likes. The collection includes more than 200,000 individual learning materials, including news, entertainment and business articles, TED Talks, popular songs, movie clips, stories, and jokes. “ Leo the Lion” is the main character of the service and a personal guide to the language jungle .

In the Internet there are a lot of language contests and Olympiads. For example, this year the pupils of our school took part in the Olympiad organized by an on-line school “SkyEng” .

Chatting with others, either native or non-native speakers of English, is a great way to practice your written skills. Having a pen friend is an effective way to practice English and make friends. You can discuss any special interesting topics or write posts in the forums. I have a pen friend on the site “ Studentsoftheworld.info” . The advantage of this site is its safety because only students and teachers are registered there.

A practical part.

I have conducted a survey of students of the 7th grade in School №2 of Pavlovsky Posad to identify their awareness of the study of the English language by using the Internet. My survey consisted of the following questions :

1. Прибегал ли ты к помощи Интернета при подготовке к уроку английского языка?


Что такое Natural Language Processing?

Natural Language Processing (далее – NLP) – обработка естественного языка – подраздел информатики и AI, посвященный тому, как компьютеры анализируют естественные (человеческие) языки. NLP позволяет применять алгоритмы машинного обучения для текста и речи.

Сегодня у многих из нас есть смартфоны с распознаванием речи – в них используется NLP для того, чтобы понимать нашу речь. Также многие люди используют ноутбуки со встроенным в ОС распознаванием речи.

Примеры

Cortana


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


Gmail

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

Dialogflow


Платформа от Google, которая позволяет создавать NLP-ботов. Например, можно сделать бота для заказа пиццы, которому не нужен старомодный IVR, чтобы принять ваш заказ.

Python-библиотека NLTK

NLTK (Natural Language Toolkit) – ведущая платформа для создания NLP-программ на Python. У нее есть легкие в использовании интерфейсы для многих языковых корпусов, а также библиотеки для обработки текстов для классификации, токенизации, стемминга, разметки, фильтрации и семантических рассуждений. Ну и еще это бесплатный опенсорсный проект, который развивается с помощью коммьюнити.
Мы будем использовать этот инструмент, чтобы показать основы NLP. Для всех последующих примеров я предполагаю, что NLTK уже импортирован; сделать это можно командой import nltk

Основы NLP для текста

В этой статье мы рассмотрим темы:

  1. Токенизация по предложениям.
  2. Токенизация по словам. и стемминг текста.
  3. Стоп-слова.
  4. Регулярные выражения. . .

1. Токенизация по предложениям

Токенизация (иногда – сегментация) по предложениям – это процесс разделения письменного языка на предложения-компоненты. Идея выглядит довольно простой. В английском и некоторых других языках мы можем вычленять предложение каждый раз, когда находим определенный знак пунктуации – точку.

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

Возьмем небольшой текст про настольную игру нарды:


Чтобы сделать токенизацию предложений с помощью NLTK, можно воспользоваться методом nltk.sent_tokenize

На выходе мы получим 3 отдельных предложения:

2. Токенизация по словам

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

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

Давайте возьмем предложения из предыдущего примера и применим к ним метод nltk.word_tokenize

3. Лемматизация и стемминг текста

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

Приведение разных словоформ к одной:


То же самое, но уже применительно к целому предложению:


Лемматизация и стемминг – это частные случаи нормализации и они отличаются.

Лемматизация – это более тонкий процесс, который использует словарь и морфологический анализ, чтобы в итоге привести слово к его канонической форме – лемме.

  1. Слово good – это лемма для слова better. Стеммер не увидит эту связь, так как здесь нужно сверяться со словарем.
  2. Слово play – это базовая форма слова playing. Тут справятся и стемминг, и лемматизация.
  3. Слово meeting может быть как нормальной формой существительного, так и формой глагола to meet, в зависимости от контекста. В отличие от стемминга, лемматизация попробует выбрать правильную лемму, опираясь на контекст.

4. Стоп-слова


Стоп-слова – это слова, которые выкидываются из текста до/после обработки текста. Когда мы применяем машинное обучение к текстам, такие слова могут добавить много шума, поэтому необходимо избавляться от нерелевантных слов.

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

В NLTK есть предустановленный список стоп-слов. Перед первым использованием вам понадобится его скачать: nltk.download(“stopwords”) . После скачивания можно импортировать пакет stopwords и посмотреть на сами слова:


Рассмотрим, как можно убрать стоп-слова из предложения:


Если вы не знакомы с list comprehensions, то можно узнать побольше здесь. Вот другой способ добиться того же результата:

Тем не менее, помните, что list comprehensions быстрее, так как оптимизированы – интерпретатор выявляет предиктивный паттерн во время цикла.

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

5. Регулярные выражения.


Регулярное выражение (регулярка, regexp, regex) – это последовательность символов, которая определяет шаблон поиска. Например:

  • . – любой символ, кроме перевода строки;
  • \w – один символ;
  • \d – одна цифра;
  • \s – один пробел;
  • \W – один НЕсимвол;
  • \D – одна НЕцифра;
  • \S – один НЕпробел;
  • [abc] – находит любой из указанных символов match any of a, b, or c;
  • [^abc] – находит любой символ, кроме указанных;
  • [a-g] – находит символ в промежутке от a до g.

Регулярные выражение используют обратный слеш (\) для обозначения специальных форм или чтобы разрешить использование спецсимволов. Это противоречит использованию обратного слеша в Python: например, чтобы буквально обозначить обратный слеш, необходимо написать '\\\\' в качестве шаблона для поиска, потому что регулярное выражение должно выглядеть как \\ , где каждый обратный слеш должен быть экранирован.

Решение – использовать нотацию raw string для шаблонов поиска; обратные слеши не будут особым образом обрабатываться, если использованы с префиксом ‘r’ . Таким образом, r”\n” – это строка с двумя символами (‘\’ и ‘n’) , а “\n” – строка с одним символом (перевод строки).

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

Модуль re в Python представляет операции с регулярными выражениями. Мы можем использовать функцию re.sub, чтобы заменить все, что подходит под шаблон поиска, на указанную строку. Вот так можно заменить все НЕслова на пробелы:


Регулярки – это мощный инструмент, с его помощью можно создавать гораздо более сложные шаблоны. Если вы хотите узнать больше о регулярных выражениях, то могу порекомендовать эти 2 веб-приложения: regex, regex101.

6. Мешок слов


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

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

Чтобы использовать модель, нам нужно:

  1. Определить словарь известных слов (токенов).
  2. Выбрать степень присутствия известных слов.

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

Пример:
Рассмотрим шаги создания этой модели. Мы используем только 4 предложения, чтобы понять, как работает модель. В реальной жизни вы столкнетесь с бОльшими объемами данных.

1. Загружаем данные


Представим, что это наши данные и мы хотим загрузить их в виде массива:


Для этого достаточно прочитать файл и разделить по строкам:

2. Определяем словарь


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

Для создания словаря можно использовать класс CountVectorizer из библиотеки sklearn. Переходим к следующему шагу.

3. Создаем векторы документа


Далее, мы должны оценить слова в документе. На этом шаге наша цель – превратить сырой текст в набор цифр. После этого, мы используем эти наборы как входные данные для модели машинного обучения. Простейший метод скоринга – это отметить наличие слов, то есть ставить 1, если есть слово и 0 при его отсутствии.

Теперь мы можем создать мешок слов используя вышеупомянутый класс CountVectorizer.



Еще пару слов про мешок слов


Сложность этой модели в том, как определить словарь и как подсчитать вхождение слов.

Когда размер словаря увеличивается, вектор документа тоже растет. В примере выше, длина вектора равна количеству известных слов.

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

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

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

  • игнорирование регистра слов;
  • игнорирование пунктуации;
  • выкидывание стоп-слов;
  • приведение слов к их базовым формам (лемматизация и стемминг);
  • исправление неправильно написанных слов.

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

Рассмотрим такое предложение:


Вот его биграммы:

  • the office
  • office building
  • building is
  • is open
  • open today

Оценка (скоринг) слов

Когда создан словарь, следует оценить наличие слов. Мы уже рассматривали простой, бинарный подход (1 – есть слово, 0 – нет слова).

Есть и другие методы:

  1. Количество. Подсчитывается, сколько раз каждое слово встречается в документе.
  2. Частотность. Подсчитывается, как часто каждое слово встречается в тексте (по отношению к общему количеству слов).

7. TF-IDF

TF-IDF (сокращение от term frequency — inverse document frequency) – это статистическая мера для оценки важности слова в документе, который является частью коллекции или корпуса.

Скоринг по TF-IDF растет пропорционально частоте появления слова в документе, но это компенсируется количеством документов, содержащих это слово.

Формула скоринга для слова X в документе Y:

TF (term frequency — частота слова) – отношение числа вхождений слова к общему числу слов документа.


IDF (inverse document frequency — обратная частота документа) — инверсия частоты, с которой некоторое слово встречается в документах коллекции.


В итоге, вычислить TF-IDF для слова term можно так:



Заключение

В этой статье были разобраны основы NLP для текста, а именно:

  • NLP позволяет применять алгоритмы машинного обучения для текста и речи;
  • NLTK (Natural Language Toolkit) – ведущая платформа для создания NLP-программ на Python;
  • токенизация по предложениям – это процесс разделения письменного языка на предложения-компоненты;
  • токенизация по словам – это процесс разделения предложений на слова-компоненты;
  • лемматизация и стемминг преследуют цель привести все встречающиеся словоформы к одной, нормальной словарной форме;
  • стоп-слова – это слова, которые выкидываются из текста до/после обработки текста;
  • регулярное выражение (регулярка, regexp, regex) – это последовательность символов, которая определяет шаблон поиска;
  • мешок слов – это популярная и простая техника извлечения признаков, используемая при работе с текстом. Она описывает вхождения каждого слова в текст.

Если вы хотите увидеть все описанные концепции в одном большом примере, то вам сюда.


Information and communication technology has affected language instruction in higher education. The advent of the Internet and the wide spread of technology in our life create new opportunities for language learning. Since most of the Internet content is in English, teachers of English gain access to the enormous variety of authentic materials relating to all spheres of life at almost no cost.

English speaking newspapers , magazines and books. One can hardly deny the usefulness of reading in the process of learning. If suited to the students’ level of English, newspaper and magazine articles can be interesting to read and may trigger some in-class discussion, as well as increase students’ cultural awareness. Therefore, electronic newspapers are a great chance for educators and learners, since they are easily accessible and virtually free;

How has the Internet changed your life?;

What is your opinion of Facebook? ;

What is your opinion of “Internet Blog”?;

What is in your opinion of “Cyberdemocracy”?;

Can the Internet replace regular book? ;

What is you r opinion about the Internet advertising?;

What is your opinion about the Internet gambling? ;

What is your opinion about online games?;

What is your prediction for the future of the Internet? ;

What is the Internet addiction?;

What is custom writing on the Internet?;

Will the Internet replace TV?;

Is the Internet fun?;

What is your opinion about the Internet copyright protection? ;

The Internet as a form of communication;

The development and future of the Internet ;

Advantages and disadvantages of the Internet in students’ life;

The effects of the Internet;

Social networking: Communication revolution or evolution?;

Problems and solutions of the Internet piracy;

The Internet censorship: pros and cons;

Education through the Internet;

Pros and cons of music and video downloading;

Industry of the Internet information influence ;

Effects of computer and the Internet on the society;

The Internet: what lies ahead? ;

Topic / Title should be written.

w rite a few sentences that lead into the main point of your essay;

f irst point in thesis;

s econd point in thesis;

s upport your point with either quotations or solid evidence;

s upport your point with either quotations or solid evidence;

s upport your point with either quotations or solid evidence;

w rite a few sentences summarizing your essay;

4) Internet chat activities. The most motivating chat activities for language students are likely to be ones which include interaction with native speakers. There are a number of ways that students can interact with guests. They can interview guests about themselves, their country, their job, their family, and so on. Students can engage in a debate or discussion about a given topic with the guest. Students can also be interviewed by the guest ;

5) E-mail. As many researchers have noted, e-mail extends what one can do in the classroom, since it provides a venue for meeting and communicating in the foreign language outside of class. Because of the nature of e-mail, FL learners do not have to be in a specific classroom at a particular time of day in order to communicate with others in the foreign language. They can log in and write e-mail from the comfort of their own room, from a public library or from a cyber-cafe, and these spatial possibilities increase the amount of time they can spend both composing and reading in the foreign language in a communicative context;

6) Watching video episodes. Teacher can download diverse video depending on a studied topic. There are three basic stages which can be used while working with video at lessons: pre-viewing, while-viewing and after-viewing;

7) Listening to songs. As most teachers find out, students love listening to music in the language classroom. It can also be a teaching tool. Often students hold strong views about music and students who are usually quiet can become very talkative when discussing it. In many cases, the teacher plays a song and leads a discussion on the meaning of the lyrics in a song. This can be effective, but this is just one of the many ways that music or song can lead to a fruitful discussion.

On the ground of the above-stated, it can be said that the Internet can bring effective and positive benefits to the process of teaching and learning a foreign language with university students at classes.

XML (англ. eXtensibleMarkupLanguage — расширяемый язык разметки; произносится [экс-эм-э́л]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

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

Правильно построенные и действительные документы XML

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

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

Действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и сторонними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах — схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным; проверяющий XML-процессор (валидатор) при проверке на соответствие правилам и схемам обязан (по выбору пользователя) сообщить об ошибке.

Синтаксис XML

В этом разделе рассматривается лишь правильное построение документов XML, то есть их синтаксис.

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

Рассмотрим пример простого кулинарного рецепта, размеченного с помощью XML:

Смешать все ингредиенты и тщательно замесить.

Закрыть тканью и оставить на один час в тёплом помещении.

Почитать вчерашнюю газету. - это сомнительный шаг. -->

Замесить ещё раз, положить на противень и поставить в духовку.

Первая строка XML-документа называется объявление XML (англ. XMLdeclaration) — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.

Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8 и UTF-16 (UTF-32 не обязателен). Признаются допустимыми, поддерживаются и широко используются (но не обязательны) другие кодировки, основанные на стандарте ISO/IEC 8859, также допустимы другие кодировки, например, русские Windows-1251, KOI-8. Часто в тэгах принципиально не используют не-латинские буквы, в этом случае UTF-8 является очень удобной кодировкой — объём, как правило, меньше, чем при UTF-16; декодирование может быть выполнено как для всего документа, так и для конкретных атрибутов и текстов; весь документ не содержит запрещённых символов при попытке разбора с неправильной кодировкой.

Корневой элемент

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

Следующий простейший пример — правильно построенный документ XML:

Это книга: "Книжечка"

Следующий фрагмент не может считаться корректным XML-документом:

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

Теги внутри комментария обрабатываться не должны.

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

Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:

Замесить ещё раз, положить на противень и поставить в духовку.

Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.

Кроме текста, элемент может содержать другие элементы:

Смешать все ингредиенты и тщательно замесить.

Закрыть тканью и оставить на один час в тёплом помещении.

Замесить ещё раз, положить на противень и поставить в духовку.

Обычный акцентированный выделенный и акцентированный выделенный

Для обозначения элемента без содержания, называемого пустым элементом, необходимо применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта. Если в DTD элемент не объявлен пустым, но в документе он не имеет содержания, для него допускается применять следующие (три) формы записи. Например:

В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа.

Сущностью (англ. entity) в XML называются именованные данные, обычно текстовые, в частности, спецсимволы. Ссылка на сущность (англ. entityreferences) указывается в том месте, где должна быть сущность и состоит из амперсанда (&), имени сущности и точки с запятой (;).

В XML есть несколько предопределённых сущностей, таких как lt (ссылаться на неё можно написав <) для левой угловой скобки и amp (ссылка — &) для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков.

Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

Полный список предопределённых сущностей состоит из & (&), < ( ), ' (') и " (") — последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе.

Существуют и другие правила, касающиеся составления корректного XML-документа.

Годом рождения XML можно считать 1996 год, в конце которого появился черновой вариант спецификации языка, или 1998 год, когда эта спецификация была утверждена. А началось всё с появления в 1986 году языка SGML.

SGML (англ. StandardGeneralizedMarkupLanguage — стандартный обобщённый язык разметки) заявил о себе как гибкий, комплексный и всеохватывающий мета-язык для создания языков разметки. Несмотря на то, что понятие гипертекста появилось в 1965 году (а основополагающие принципы сформулированы в 1945 году [1] ), SGML не имеет гипертекстовой модели. Создание SGML можно с уверенностью назвать попыткой объять необъятное, так как он объединяет в себе такие возможности, которые крайне редко используются все вместе. В этом и состоит его главный недостаток — сложность и, как следствие, дороговизна этого языка ограничивает его использование только крупными компаниями, которые могут позволить себе купить соответствующее программное обеспечение и нанять высокооплачиваемых специалистов. Кроме того, у небольших компаний редко возникают настолько сложные задачи, чтобы привлекать к их решению SGML.

Сильные и слабые стороны

XML — язык разметки, позволяющий стандартизировать вид файлов-данных, используемых компьютерными программами, в виде текста, понятного человеку;

XML поддерживает Юникод;

в формате XML могут быть описаны такие структуры данных как записи, списки и деревья;

XML — это самодокументируемый формат, который описывает структуру и имена полей так же как и значения полей;

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

XML — формат, основанный на международных стандартах;

Иерархическая структура XML подходит для описания практически любых типов документов, кроме аудио и видео мультимедийных потоков, растровых изображений, сетевых структур данных и двоичных данных;

XML представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;

XML не зависит от платформы;

XML является подмножеством SGML (который используется с 1986 года). Уже накоплен большой опыт работы с языком и созданы специализированные приложения;

XML не накладывает требований на порядок расположения атрибутов в элементе и вложенных элементов разных типов [2] , что существенно облегчает выполнение требований обратной совместимости;

В отличие от бинарных форматов, XML содержит метаданные об именах, типах и классах описываемых объектов, по которым приложение может обработать документ неизвестной структуры (например, для динамического построения интерфейсов [3] );

XML имеет реализации парсеров для всех современных языков программирования; [4]

Существует стандартный механизм преобразования XSLT, реализации которого встроены в браузеры, операционные системы, веб-серверы.

XML поддерживается на низком аппаратном, микропрограммном и программном уровнях в современных аппаратных решениях. [5]

Синтаксис XML избыточен. [6]

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

Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON [2] , YAML) и особенно в форматах данных, оптимизированных для конкретного случая использования.

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

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

Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения. [7]

Нет общепринятой методологии для моделирования данных в XML, в то время как для реляционной модели и объектно-ориентированной такие средства разработаны и базируются на реляционной алгебре, системном подходе и системном анализе.

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

В результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов (различными разработчиками), например, значение может быть записано как атрибут тега или как тело тега и т. д. Например: или или 1 1 или или и т. д. [9]

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

Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами и сетевой моделью данных.

Выражение неиерархических данных (например графов) требует дополнительных усилий

Пространства имён XML сложно использовать и их сложно реализовывать в XML-парсерах.

Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML [11] , XF [12] ).

Отображение XML во Всемирной паутине

Наиболее распространены три способа преобразования XML-документа в отображаемый пользователю вид:

Применение стилей CSS;

Применение преобразования XSLT;

Написание на каком-либо языке программирования обработчика XML-документа.

Без использования CSS или XSL XML-документ отображается как простой текст в большинстве Web-браузеров. Некоторые браузеры, такие как Internet Explorer и Mozilla Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

Применение стилей CSS

Процесс аналогичен применению CSS к HTML-документу для отображения.

Для применения CSS при отображении в браузере, XML-документ должен содержать специальную ссылку на таблицу стилей. Например:

Применение преобразования XSLT

XSL является технологией, описывающей как форматировать или преобразовывать данные XML-документа. Документ трансформируется в формат, подходящий для отображения в браузере. Браузер — это наиболее частое использование XSL, но не стоит забывать, что с помощью XSL можно трансформировать XML в любой формат, например VRML, PDF, текст.

Для задания XSL трансформации (XSLT) на стороне клиента требуется наличие в XML инструкции следующего вида:

Так как XML является достаточно абстрактным языком, были разработаны словари XML.

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

Были созданы более специализированные словари, например протокол передачи данных SOAP, который не является человеко-ориентированным и достаточно трудно читаем. Есть коммерческие словари, такие как CommerceML, xCBL и cXML которые используются для передачи данных, ориентированных на торговую деятельность, эти словари включают в себя описание системы заказов, поставщиков, продуктов и прочее.

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

↑Объять необъятное — изобретение мыши Дугласом Энгельбартом

↑ 1 2 JSON: The Fat-Free Alternative to XML

↑Intel XML Accelerator

↑ David Megginson. Imperfect XML: Rants, Raves, Tips, and Tricks … from an Insider. Chapter 8

↑Data File Metaformats

↑ Gustavo Alonso. Myths around Web Services Swiss Federal Institute of Technology, page 6

↑ Tim Bray. Using XML in Internet Protocols Sun Microsystems

↑O’Reilly Network: An Interview with Chris Date

Сергеев А. П. HTML и XML. Профессиональная работа. — М.: Диалектика, 2004. — 880 с. — ISBN 5-8459-0676-8

XML на сайте Консорциума Всемирной паутины (W3C)

Официальная спецификация стандарта XML 1.0(англ.)

Русский перевод спецификации XML 1.0

Официальная спецификация стандарта XML 1.1(англ.)

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

Читайте также: