Все они полезны, и это зависит от приложений, над которыми вы работаете, но для меня XML Schema имеет решающее значение. Это позволяет вам более, чем DTD, определять структуру того, как должны выглядеть ваши XML-документы. Вы можете определить более подробные ограничения на то, какие значения могут иметь элементы и атрибуты, и вы можете легко проверить XML-документ по схеме. Еще одна ключевая вещь в Schema - это все языковые привязки. Вы можете скомпилировать свою схему в Java или C ++, используя JAXB или CodeSynthesis соответственно. Это позволяет вам не иметь дело с какими-либо тегами XML самостоятельно, только со структурами данных.