如何声明xlink命名空间以验证Docbook 5链接?

时间:2014-03-09 13:42:59

标签: validation namespaces xml-namespaces 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 个答案:

答案 0 :(得分:1)

Xml验证和命名空间通常在XML Schema(XSD)规范的上下文中设置问题,但问题可以在文档类型定义(DTD)规范上下文中得到解答。

针对docbook.dtd

进行验证

如果您针对docbook.dtd进行验证,则必须使用xmlns:xlink作为已解答的here,但请先仔细考虑为什么必须使用Document Type Declaration and namespaces,因为XML架构是DTD和XSD支持命名空间DTD不支持它们。

针对docbook.xsd

进行验证

如果您对docbook.xsd进行验证,则可以使用您喜欢的任何内容,但保留three-letter sequence x, m, l, in any case combination。例如,以下test.xml,直接取自DocBook V5.0 - The Transition Guide验证成功:

$ 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
$