为Docbook添加新元素

问题描述 投票:0回答:1

我是docbook和XSLT的新手,我想在我的docbook中添加一个新的元素,我有一个XML,就像这样。

 <?xml version='1.0' encoding='UTF-8'?>
    <book  version="5.0"
      xmlns="http://docbook.org/ns/docbook"> 
    <d:chapter>
            <d:title/>
            <d:section>
              <d:title>Section 1</d:title>
              <d:simpara>texte   </d:simpara>
            </d:section>
          </d:chapter>
        </d:book>

我需要在一个步骤中进行多次转换;第一次转换是在docbook的xml结构中添加一个新的部分,包括标题和一些文本,然后在第二次转换中生成转换,以获得我的输出文件作为pdf文件。我在一个变量中创建新的元素,使用exlt:node-set()函数将变量的内容转换为节点集,然后用标准的DocBook样式表对节点集进行处理,得到pdf输出文件。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo="http://www.w3.org/1999/XSL/Format"
        xmlns:set="http://exslt.org/sets"
        xmlns:saxon="http://icl.com/saxon"
        xmlns:exsl="http://exslt.org/common"
        extension-element-prefixes="exsl"
        xmlns:d="http://docbook.org/ns/docbook"
        exclude-result-prefixes="d"
        version="1.0">

    <?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_PDF_FOP"?>
    <!-- Import standard -->

    <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/profile-docbook.xsl"/>
    <!-- DocBook XSL Parameters -->

    <xsl:template match="node() | @*" mode="change"> 
        <xsl:copy>  
            <xsl:apply-templates select="@* | node()" mode="change"/>  
        </xsl:copy>
    </xsl:template>         
    <xsl:template match="d:chapter" mode="change">

        <xsl:copy> 
            <xsl:copy-of select="@*"/>
            <xsl:copy-of select="*"/>
            <d:section>
                <d:title> Cette section a été ajoutée </d:title>
                <d:para> ce texte a été ajouté </d:para>
            </d:section>
        </xsl:copy>
    </xsl:template>
<xsl:template match="d:book" >

<xsl:variable name="content"> 
        <xsl:apply-templates mode="change"/> 
    </xsl:variable>

    <xsl:apply-templates select="exsl:node-set($content)/*"  /> 

</xsl:template> 

</xsl:stylesheet>

作为结果,我希望一个PDF文件与2部分。

谢谢你的帮助,我是一个新的docbook和XSLT,我试图添加一个新的元素到我的docbook,我有一个XML,像这样的东西:

xml xslt docbook
1个回答
0
投票

不知道这是否能回答你的问题 但它看起来好像你想实现在每个文档中选择性地添加一些标准段落。

如果输入文档中包含某个变量,它就会被一个标准段落所取代。这个段落是XSL的一部分。

如果真的是这样,为什么不 使用XInclude将XML文档和片段结合起来。? 这是一个很好的将XML文档纳入其他XML文档的可能性。一个好的开始是 了解XInclude.

© www.soinside.com 2019 - 2024. All rights reserved.