【已解决】用XMLmind XML Editor加载Docbook的xml出现错误提示:element "note" from namespace "http://docbook.org/ns/docbook" not allowed in this context

【问题】

之前自己已经写好的,docbook的xml文件,

用XMLmind XML Editor去加载,结果出现错误提示:

element "note" from namespace "http://docbook.org/ns/docbook" not allowed in this context

element note from namespace not allowed in this context

【解决过程】

1.尝试,把note:

<?xml version='1.0' encoding="utf-8"?>

<note 
    xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xl="http://www.w3.org/1999/xlink"

    xml:id="common_multi_format" >
...

</note>

改为tip:

<?xml version='1.0' encoding="utf-8"?>

<tip 
    xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xl="http://www.w3.org/1999/xlink"

    xml:id="common_multi_format" >
...

</tip>

结果还是类似错误:

element "tip" from namespace "http://docbook.org/ns/docbook" not allowed in this context

2.后来去看了下xml源代码,发现,此处的note的内容,是放在abstract之下的:

    <abstract>
        <para>本文先简介了什么是Docbook,然后详细介绍了如何搭建中文的Docbook开发环境,再详细记录了Docbook开发过程中所遇到的各种注意事项和遇到的问题及解决办法,同时给出很多常见的Docbook中各种元素的示例代码,另外也记录了一些值得参考的Docbook相关的资料。</para>
        &entity_common_multi_format;
    </abstract>

引用的entity_common_multi_format是entity_common_multi_format.xml:

<?xml version='1.0' encoding="utf-8"?>

<note 
    xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xl="http://www.w3.org/1999/xlink"

    xml:id="common_multi_format" >
...

</note>

所以就是,在abstract的子节点出现note或tip。

然后查了半天,最后参考:

abstract

而发现:

Children

The following elements occur in abstract: anchor, formalpara, info (db.titleforbidden.info), info (db.titleonly.info), para, simpara, title, titleabbrev.

即,abstract的子节点中,不允许有note或tip。

3.所以去改为,其所运行的info:

<?xml version='1.0' encoding="utf-8"?>

<info 
    xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xl="http://www.w3.org/1999/xlink"

    xml:id="common_multi_format" >
...

</info>

试试。结果还是不行,貌似是因为此处的info,是:

info (db.info), info (db.titleforbidden.info), info (db.titleonly.info), info (db.titleonlyreq.info), info (db.titlereq.info).

而不是,那个单独的这种,比如单独的note:

note

4.所以,再想其他办法。

发现了,abstract下,可以正常支持para,para下面支持独立的note或tip。

所以可以改为:

    <abstract>
        <para>本文先简介了什么是Docbook,然后详细介绍了如何搭建中文的Docbook开发环境,再详细记录了Docbook开发过程中所遇到的各种注意事项和遇到的问题及解决办法,同时给出很多常见的Docbook中各种元素的示例代码,另外也记录了一些值得参考的Docbook相关的资料。</para>
        <para>&entity_common_multi_format;</para>
    </abstract>

这样,para内部,不论是note还是tip,就都可以了。

就可以消除此错误了。

 

【总结】

docbook的语法规则,还是尽量要遵守的。。。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量