Мне было интересно, почему в названии XML есть буква L.
Сам по себе XML ничего не «делает». Это просто формат хранения данных, а не язык! Языки "делают" вещи.
Чтобы заставить XML «делать» что-то, превращать его в язык, нужно добавить xmlns
атрибуты к его корневому элементу. Только тогда он сообщает окружающей среде, о чем он.
Одним из примеров является XHTML. Он активен, имеет ссылки, гипертекст, стили и т. Д., Все они запускаются xmlns
. Без этого XHTML-файл - это просто набор данных в узлах разметки.
Так почему же тогда XML называют языком? Это ничего не описывает, это не интерпретирует, это просто так.
Редактировать: Может быть, мой вопрос должен был быть более широким. Поскольку в настоящее время ответ «потому что XML был назван в честь SGML, который был назван в честь GML и т. Д.», Вопрос должен был быть таким: почему языки разметки (например, XML) называются языками?
Ох, и WRT близкие голоса: нет, я не спрашиваю о X. Я спрашиваю о L!
источник
Ответы:
Реальный ответ заключается в том, что в названии XML есть буква L, потому что парень по имени Раймонд Лори был одним из разработчиков первого «языка разметки» в IBM в 1970-х годах. Разработчики должны были найти название для языка, поэтому они выбрали GML, потому что это были инициалы трех разработчиков (Goldfarb, Mosher и Lorie). Затем они создали общий язык разметки backronym .
Позже это стало стандартизированным как SGML ( стандартизированный общий язык разметки ), и когда XML был создан, разработчики хотели сохранить постфикс ML, чтобы указать семейное отношение к SGML, и они добавили X вперед, потому что они думали, что это выглядело круто. (Несмотря на то, что это на самом деле не имеет смысла - XML - это мета-язык, который позволяет вам определять расширяемые языки, но XML сам по себе не является расширяемым.)
Что касается вашего второго вопроса, можно ли XML по праву назвать языком:
Любой структурированный текстовый (или даже двоичный) формат, который может быть обработан вычислительно, может называться языком. Язык ничего не «делает» как таковой, но некоторые программы могут обрабатывать ввод на языке и «делать» что-то на его основе.
Вы заметите, что XML - это «формат хранения», который является истинным, но текстовый формат хранения можно назвать языком, эти термины не являются взаимоисключающими.
Языки программирования являются подмножеством языков. Например, HTML и CSS - это языки, но не языки программирования , а JavaScript - это настоящий язык программирования. Тем не менее, формального определения языка программирования также не существует, и существует большая серая зона языков, которую можно назвать либо форматами данных, либо языками программирования в зависимости от вашей точки зрения.
Учитывая это, XML явно является языком. просто не язык программирования - хотя он может использоваться для определения языков программирования, таких как XSLT.
Ваше мнение о пространствах имен не имеет значения. Пространства имен являются дополнительной функцией XML и не изменяют семантику словаря XML. Просто необходимо устранить неоднозначность имен элементов, если формат может содержать несколько словарей.
Изменить: reinierpost указал, что вы могли иметь в виду что-то другое с вопросом, чем то, что я понял. Возможно, вы имели в виду, что определенные словари, такие как XHTML, RSS, XSLT и т. Д., Являются языками, потому что они связывают элементы и атрибуты с определенной семантикой, но сам стандарт XML не определяет никакой семантики для конкретных элементов и атрибутов, поэтому он не выглядит как " настоящий язык ".
Мой ответ на этот вопрос будет то , что XML делает определить как синтаксис и семантику, он просто определяет его на другом уровне. Например, он определяет синтаксис элементов и атрибутов и правила о том, как их обрабатывать. XML - это «метаязык», который все еще является своего рода языком (точно так же, как метаданные по-прежнему являются данными!) В качестве примера EBNF также является языком, но его целью является определение синтаксиса других языков, поэтому он также является метаязыком.
источник
Потому что это язык. Разметки язык, а не язык программирования.
Обратите внимание, что естественные человеческие языки, такие как английский и испанский, тоже ничего не «делают». Фактически, технически C ++, Java и тому подобное ничего не «делают», пока они не будут переданы в компилятор, и результат не будет выполнен. Делать вещи и быть языком в значительной степени ортогональны друг другу.
источник
</nitpick>
В любом случае, хороший ответ!Пусть Σ - непустое конечное множество символов, называемое алфавитом . Тогда Σ * - счетное бесконечное множество конечных слов, которое может быть образовано путем конкатенации нуля или более символов из Σ. Любое четко определенное подмножество L ⊆ Σ * является языком .
Давайте применим это к XML. Его алфавит - это набор символов Unicode U , который не является пустым и конечным. Не каждая конкатенация из нуля или более символов Юникода является правильно сформированным XML-документом, например, строкой
явно нет. Подмножество XML ⊂ U *, которое формирует правильно сформированные XML- документы, разрешимо (или «рекурсивно»). Существует машина (алгоритм или компьютерная программа), которая принимает в качестве входных данных любое слово w ∈ U * и по истечении конечного промежутка времени выводит либо 1, если w ∈ XML, и 0 в противном случае. Такой алгоритм является подпрограммой любого программного обеспечения для обработки XML. Не все языки разрешимы. Например, набор допустимых программ на C, которые заканчиваются за конечное время, не является (это известно как проблема остановки). Когда кто-то разрабатывает новый язык, важно принять решение о том, должен ли он быть настолько мощным, насколько это возможно, или лучше ограничить выразительность в пользу решимости.
Некоторые языки могут быть определены с помощью грамматики, которая, как говорят, производит язык. Грамматика состоит из
Любое слово, которое состоит исключительно из литералов и может быть получено, начиная с начального символа и затем применяя данные правила, относится к языку, созданному грамматикой.
В зависимости от того, насколько сложные правила вы допускаете в своей грамматике, требуются различные сложные машины, чтобы доказать, что данное слово действительно может быть создано грамматикой. Приведенный выше пример представляет собой обычную грамматику, которая является самой простой и наименее мощной. Следующий мощный класс грамматик называется контекстно-свободным . Эти грамматики также очень просто проверить. XML (если я не пропускаю какую-то непонятную функцию, о которой я не знаю) может быть описан с помощью контекстно-свободной грамматики. Классификация грамматик образует Хомскую иерархию грамматик (и, следовательно, языков). Каждый язык, который может быть описан грамматикой, по крайней мере, полуразрешим(или «рекурсивно перечислимый»). То есть существует машина, которая, учитывая слово, которое на самом деле принадлежит языку, получает доказательство того, что оно может быть создано грамматикой в течение конечного времени, и никогда не выдаст неверного доказательства. Такая машина называется верификатором . Обратите внимание, что машина может никогда не остановиться, если ей дается слово, которое на самом деле не принадлежит языку. Ясно, что мы хотим, чтобы наши языки программирования описывались менее мощными грамматиками, чтобы иметь возможность отклонять недопустимые программы в течение ограниченного времени.
Схемы - это дополнение к XML, позволяющее уточнить набор правильно оформленных документов. Правильно оформленный документ, который следует определенной схеме, называется действительным в соответствии с этой схемой. Например, строка
является правильно сформированным документом XML, но не является действительным документом XHTML. Существуют схемы для XHTML , SVG , XSLT и чего-либо еще. Проверка схемы также может быть выполнена с помощью алгоритма, который гарантированно останавливается после конечного количества шагов для каждого входа. Такая программа называется валидатором или валидирующим парсером. Схемы определяются так называемыми языками определения скем , которые являются способом формального определения грамматик. XSD является официальным языком определения схемы для XML и сам по себе основан на XML. RELAX NG - более элегантная, намного более простая и немного менее мощная альтернатива XSD.
Поскольку вы можете определять свои собственные схемы, XML называется расширяемым языком, который является источником «X» в «XML».
Вы можете определить набор правил, который дает XML-документам интерпретацию как описания компьютерных программ. XSLT, упомянутый ранее, является примером такого языка программирования, построенного на XML. В более общем смысле вы можете сериализовать абстрактное синтаксическое дерево практически любого языка программирования совершенно естественным образом в XML, если это то, что вам нужно.
источник
В информатике формальный язык - это просто набор строк, обычно бесконечных и часто описываемых с использованием правил (две распространенные версии этих правил - регулярные выражения и формальные грамматики ).
Обратите внимание, что это означает, что все, что нужно языку - это синтаксис , язык не должен описывать, что означает каждая действительная строка (это называется семантикой ).
Теперь это означает, что языки программирования являются формальными языками, которые также имеют семантику, которая описывает некоторые вычисления. Например, XHTML - это формальный язык, семантика которого (грубо и неформально) описывает, как выглядит и ведет себя гипертекстовый документ.
XML по-прежнему является языком, хотя сам по себе не имеет семантики (но многие языки, производные от XML, используют, например, XHTML и XAML).
Технически, двоичные форматы также являются языками, но они так не называются. Термин «язык» зарезервирован для удобочитаемых форматов.
источник
Язык - это метод передачи информации.
Язык программирования - это метод передачи алгоритмов.
Язык разметки, такой как XML, является языком для передачи данных.
источник
XML - это метаязык. Вы используете его для определения конкретных языков. Языки никогда ничего не делают, они просто позволяют нам выражать вещи. Кроме того, неверно, что XML является «языком хранения». Наоборот, на самом деле. Вы можете хранить документы XML, как вам угодно. XML лучше рассматривать как язык передачи. PS. Если вы не думаете, что XML «делает» что-либо, вам придется объяснить, почему многие системы (например, Jetty) используют XML как (плохой) язык программирования. Это грустное злоупотребление XML, но оно существует в дикой природе, и это только один из многих примеров.
источник