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

标签 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>

?

最佳答案

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

针对 docbook.dtd 进行验证

如果您针对 docbook.dtd 进行验证您必须使用 xmlns:xlink如回答 here ,但首先要仔细考虑为什么必须使用 Document Type Declaration and namespaces因为 XML Schema 是 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
$ 

关于validation - 如何声明 xlink 命名空间以验证 Docbook 5 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282931/

相关文章:

java - 如何使用翻译器和/或 validator 使 Tapestry 4 中的字符串字段成为必需?

.net - WPF 自定义命名空间不起作用

c# - 使用 XSD 架构的 Xml 验证

php - 正则表达式 - 防止重复字符

namespaces - 在 Fortran 90 中模拟命名空间

c# - Visual Basic.NET 与 C# 中命名空间的区别以及如何处理它们

JavaScript 命名空间对象字面量

java - XSLT 和 Java : Default Namespace XMLNS

jsf-2 - f :viewParam doesn't pass required parameter when new xmlns. jcp.org 命名空间已使用

ruby-on-rails - 评估日期是否不是模型中的过去日期之一——Ruby on Rails