Как объявить пространство имен xlink для проверки ссылки на Docbook 5?

Могу ли я использовать xl:

<?xml version="1.0"?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
    ...
</article>

или я должен использовать xlink:

<?xml version="1.0"?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
    ...
</article>

?

1 ответ

Решение

Проверка XML и пространства имен обычно задают вопрос в контексте спецификации XML-схемы (XSD), но на этот вопрос можно ответить в контексте спецификации определения типа документа (DTD).

Проверка против docbook.dtd

Если вы проверяете против docbook.dtd ты должен использовать xmlns:xlink как ответили здесь, но сначала тщательно продумайте, почему вы должны использовать Декларацию типа документа и пространства имен, потому что XML-схемы являются наследниками DTD, а XSD поддерживают пространства имен DTD не поддерживают их.

Проверка против docbook.xsd

Если вы проверяете против docbook.xsd Вы можете использовать все, что угодно, но зарезервированную трехбуквенную последовательность x, m, l в любом случае. Например, следующее test.xmlпрямо из DocBook V5.0 - Руководство по переходу успешно подтверждает:

$ ls
docbook.xsd  test.xml  xlink.xsd  xml.xsd
$ xmllint --schema docbook.xsd test.xml 
<?xml version="1.0"?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
    <title>Test</title>
    <section>
        <title>LS command</title>
        <para xml:id="ls">
            This command is a synonym for <command linkend="dir">DIR</command> command.
        </para>
        <para xml:id="dir">
            This command is a synonym for <command linkend="ls">LS</command> command.
        </para>
        <para>
            <application xl:href="http://www.gnu.org/software/emacs/">Emacs</application>
        </para>
    </section>
</article>
test.xml validates
$ 
Другие вопросы по тегам