首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向Docbook添加新元素

向Docbook添加新元素
EN

Stack Overflow用户
提问于 2020-04-23 23:57:29
回答 1查看 109关注 0票数 0

我刚接触docbook和XSLT,我正在尝试向我的docbook添加一个新元素,我有一个XML,类似于:

代码语言:javascript
运行
复制
 <?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输出

代码语言:javascript
运行
复制
<?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>

因此,我希望与2节的pdf文件。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-05-07 14:53:28

不确定这是否可以回答您的问题。但看起来你似乎想要实现在每个文档中随意添加一些标准段落。

如果输入文档包含某个变量,它将被替换为标准段落。这一段是XSL的一部分。

如果确实是这样,为什么不使用XInclude将文档和片段组合起来呢?这是将XML文档包含到其他XML文档中的一个很好的可能性。Understanding XInclude是一个很好的开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61391614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档