代码之家  ›  专栏  ›  技术社区  ›  Walter Kuhn

是否可以将docbook“文章”包含到“书籍”中?

  •  0
  • Walter Kuhn  · 技术社区  · 6 年前

    从docbook生成PDF时遇到问题。

    我需要基于多个docbook XML生成一个PDF。其中一些xml是手动编写的(如下面的摘录“book.xml”),一些是由OxygenXML生成的(下面的第二个摘录)。后者是使用OxygenXML将XSD模式传输到docbook中的。因为氧气在这里没有选择,所以它总是产生一个docbook“文章”。

    包含这些文章的文件是docbook“book”。然而,包含会产生错误:第一个错误表明:

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

    我的书。xml:

    <?xml version="1.0" encoding="utf-8"?>
    <book version="5.1" xml:lang="en" xmlns="http://docbook.org/ns/docbook"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:xlink2="http://www.w3.org/1999/xlink"
      xmlns:xlink="http://www.w3.org/1999/xhtml"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:ns6="http://www.w3.org/2000/svg"
      xmlns:ns5="http://www.w3.org/1998/Math/MathML"
      xmlns:ns2="http://docbook.org/ns/transclusion"
      xmlns:ns="http://docbook.org/ns/docbook">
    
    <title>xyz</title>
    
    <chapter>
      <title>my xsd previously rendered by oxygen</title>
      <xi:include href="generated_schemata/my_xsd.xml"/>
    </chapter>
    ...
    

    以及生成的my\u xsd的开头。xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rng" type="xml"?>
    <!--XML Schema documentation generated by <oXygen/> XML Developer.-->
    <article version="5.0" xmlns="http://docbook.org/ns/docbook"
         xmlns:ns5="http://www.w3.org/1998/Math/MathML"
         xmlns:ns4="http://www.w3.org/1999/xhtml"
         xmlns:ns3="http://www.w3.org/2000/svg"
         xmlns:ns2="http://www.w3.org/1999/xlink"
         xmlns:ns="http://docbook.org/ns/docbook">
      <title>Schema documentation for ServiceCatalogue.xsd</title>
    
      <info>
        <pubdate>february 20, 2018</pubdate>
      </info>
    
      <section>
        <title>Namespace: ""</title>
    ...
    

    问:有没有办法将docbook的“文章”包含到“书”中(或者其他结构,所以最后我会得到一个PDF)?

    我使用的工具是maven和docbkx插件。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Eduard Tibet    6 年前

    代码片段中的问题是您在 chapter -不在范围内 book 它本身DocBook模式不允许这样做( article 不能在 )

    即。:

    • < 文章 (或 set < 文章 )是允许的;
    • 但这(如您的示例中所示): < < 文章 不是

    因为xinclude的声明,你没有看到全貌。

    因此,解决方法是(比较这两个代码片段):

    您的:

    <book version="5.1" ...>
    ...
    <title>xyz</title>
    
    <chapter>
       <title>my xsd previously rendered by oxygen</title>
       <xi:include href="generated_schemata/my_xsd.xml"/>
    </chapter>
    </book>
    

    正确的一个:

    <book version="5.1"...>
    ...
    <title>xyz</title>
    
    <xi:include href="generated_schemata/my_xsd.xml"/>
    
    </book>
    

    注意事项 :您在book(5)上有不同的架构验证。 1. )和第(5)条。 0 )! 请注意!