Как объявить пространство имен 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>

?


person taringamberini    schedule 09.03.2014    source источник


Ответы (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
$ 
person taringamberini    schedule 09.03.2014