Я новичок в 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-файл с двумя разделами.
Спасибо за любую помощь.