Я не знав різниці, але співробітник каже, що він є, хоча він не може це зробити. Яка різниця, якщо така є?
Я не знав різниці, але співробітник каже, що він є, хоча він не може це зробити. Яка різниця, якщо така є?
Відповіді:
Є різниця, так.
XML, який відповідає стандарту XML , вважається сформованим, тоді як xml, який відповідає стандарту DTD , вважається дійсним.
Добре сформований означаєщо текстовий об'єкт відповідає вимогам W3C для того XML .
Дійсно означає, що добре сформований XML відповідає додатковим вимогам, заданим зазначеною схемою.
Відповідно до рекомендації W3C щодо XML :
[Визначення: Об’єкт даних - це документ XML, якщо він добре сформований , як визначено в цій специфікації. Крім того, документ XML є дійсним, якщо він відповідає певним подальшим обмеженням.]
<a><b></a></b>
<
або &
використовуються у змісті, а не <
або &
.Технічно символи двокрапки дозволені в іменах компонентів у XML. Однак двокрапки слід використовувати в іменах лише для цілей простору імен:
Примітка:
Простори імен у рекомендації XML [ Імена XML ] надають значення іменам, що містять символи двокрапки. Тому автори не повинні використовувати двокрапку в іменах XML, за винятком цілей простору імен, але процесори XML повинні приймати двокрапку як символ імені.
Отже, інший термін, добре сформований простір імен , визначений у просторах імен у Рекомендації XML 1.0 W3C, що передбачає усі правила XML для чіткої форми, а також ті, що регулюють простори імен та префікси простору імен.
У розмовній формі термін добре сформований часто використовується там, де чітко сформований простір імен буде точнішим. Однак це незначний технічний спосіб із менш практичним наслідком, ніж різниця між добре сформованим та дійсним XML, описаним у цій відповіді.
Дійсний XML - це XML, який успішно перевіряє DTD.
Добре сформований XML - це XML, у якому всі теги закриті у належному порядку, і якщо він має декларацію, він першим у файлі має відповідні атрибути.
Іншими словами, валідність відноситься до семантики, правильність - до синтаксису.
Отже, ви можете мати недійсний добре сформований XML.
Як сказали інші, добре сформований XML відповідає специфікації XML, а дійсний XML відповідає даній схемі.
Інший спосіб сказати, що добре сформований XML є лексично правильним (його можна проаналізувати), тоді як дійсний XML є граматично правильним (його можна підібрати до відомої лексики та граматики).
Документ XML не може бути дійсним, поки він не сформований належним чином. Всі XML-документи мають однаковий стандарт для належної сформованості (RFC, викладений W3). Один XML-документ може бути дійсним щодо одних схем, а інший - недійсним. Існує ряд мов схем, багато з яких самі по собі засновані на XML.
Добре сформований XML - це XML, який відповідає синтаксичним вимогам мови. Не пропускаючи жодних закриваючих тегів, використовуючи всі ваші теги-одиночки <whatever />
замість просто <whatever>
, а також закриваючи теги у правильному порядку.
Дійсний XML - це XML, який використовує DTD і відповідає усім його вимогам. Отже, якщо ви неправильно використовуєте атрибут, ви порушуєте DTD і не є дійсним.
Усі дійсні XML правильно сформовані, але не всі сформовані XML є дійсними.
XML добре сформований, якщо відповідає вимогам до всіх XML-документів, встановленим стандартами, - тому такі речі, як наявність одного кореневого вузла, правильне вкладання вузлів, усі вузли мають закриває тег (або використання порожнього скороченого вузла косої риски перед кут закриття), атрибути, які цитуються і т. д. Якщо правильно сформувати, це просто означає, що він дотримується правил XML і тому може бути проаналізований належним чином.
XML є дійсним, якщо перевірятиметься відповідно до DTD або схеми. Це, очевидно, відрізняється від випадку до випадку - XML, який є дійсним для однієї схеми, не буде дійсним для іншої схеми, хоча він все ще добре сформований.
Якщо XML не правильно сформований, його неможливо правильно проаналізувати - аналізатори просто видадуть виняток або повідомить про помилку. Це загальне, і не має значення, що містить ваш XML. Тільки після його аналізу його можна перевірити на дійсність. Цей домен або контекст залежить і вимагає DTD або схеми для перевірки. Для простих XML-документів у вас може не бути DTD або схеми, і в цьому випадку ви не можете знати, чи справжній XML - поняття чи дійсність просто не застосовуються в цьому випадку. Звичайно, це не означає, що ви не можете ним користуватися, це просто означає, що ви не можете сказати, чи це дійсно.
W3C, у специфікації XML, визначив певні правила, яких потрібно дотримуватися під час створення XML-документів. Приклади таких правил включають наявність рівно одного кореневого елемента, кінцевий тег для кожного стартового тегу, використання одинарних / подвійних лапок для значень атрибутів тощо. Якщо документ XML відповідає всім цим правилам, він називається добре сформованим документом, і для аналізу та обробки таких документів можна використовувати синтаксичний аналізатор XML.
Визначення типів документів (DTD) або схеми XML можуть бути використані для визначення структури та змісту конкретного класу XML-документів. Сюди входять деталі взаємовідносин між батьками та дітьми, списки атрибутів, інформація про тип даних, обмеження на значення тощо. На додаток до чітко сформованих правил, якщо XML-документ також відповідає правилам, зазначеним у асоційованій DTD / схемі, він називається бути дійсним документом XML.
Усі діючі документи XML добре сформовані, але зворотне не завжди справедливо. Добре сформовані документи XML не обов'язково повинні бути дійсними.
Додам, що дійсний XML також означає, що він сформований, але добре сформований XML не обов'язково дійсний.
Якщо XML підтверджує правила DTD, то це дійсний XML. Якщо документ XML відповідає правилам XML (усі запущені теги закриті, є кореневий елемент і т.д.), це добре сформований XML.
Взято з розширюваної мови розмітки (XML) 1.0 (п’яте видання) - Рекомендація W3C від 26 листопада 2008 року :
[Визначення: Об’єкт даних - це документ XML, якщо він добре сформований, як визначено в цій специфікації. Крім того, документ XML є дійсним, якщо він відповідає певним подальшим обмеженням.]
Для тих, хто віддає перевагу пседо-коду замість абзаців абзаців тексту ... :)
IF is_well_formed(<XML_doc>) THEN
# It is well-formed, and can be parsed
IF is_valid(<XML_doc>) THEN
# Well-formed and ALSO valid. Hurray!
# **A valid XML doc, is a well-formed doc!**
ELSE
# Only well-formed, NOT valid
END IF
ELSE
# Not well-formed, or valid!
END IF
FUNCTION is_well_formed
IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
FUNCTION is_valid
IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
# Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
На основі теорії: "Добре сформований" проти дійсний
DTD - абревіатура від Визначення типу документа. Це опис вмісту для сімейства файлів XML. Це частина специфікації XML 1.0 і дозволяє описати та переконатись, що даний екземпляр документа відповідає набору правил, що деталізують його структуру та зміст.
Перевірка - це процес перевірки документа на відповідність DTD (більш загально набору правил побудови).
Процес перевірки та побудова DTD - це дві найскладніші частини життєвого циклу XML. Коротко DTD визначає всі можливі елементи, які можна знайти у вашому документі, яка формальна форма дерева вашого документа (шляхом визначення дозволеного вмісту елемента; або тексту, регулярного виразу для дозволеного списку дочірніх елементів або змішаного вмісту тобто як текст, так і діти). DTD також визначає допустимі атрибути для всіх елементів та типи цих атрибутів.
Ну, а XML, який погано сформований, за визначенням, не є XML. Попл зазвичай називає дійсний XML як XML, який відповідає певній схемі (XSD або DTD).
Див. XML DTD для шкіл W3 :
XML-документ із правильним синтаксисом називається "Добре сформований".
Документ XML, перевірений на відповідність DTD, є "Добре сформований" та "Дійсний".