XLST для вставки фрагмента HTML в результирующий HTML-документ.

У меня есть XML-файл docBook 4.4, который является руководством пользователя. Я могу использовать инструменты (Maven), чтобы преобразовать это в HTML, PDF без проблем. Проблема, с которой я сталкиваюсь, заключается в том, чтобы вставить небольшой фрагмент кода HTML в полученный файл HTML.

Я хотел бы добавить следующий фрагмент HTML:

<xsl:template name="xxxxxxx">
  <img src="images/pdfdoc.gif">PDF</img>
</xsl:template>

Результирующий HTML-код выглядит следующим образом:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="./hilfeKMV.css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
<meta name="date" content="10/12/2011">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
    alink="#0000FF">
    <div lang="de" class="book"
        title="Title">
        <div class="titlepage">
            <div>
                <div>
                    <h1 class="title">
                        <a name="d0e1"></a>title
                    </h1>
                </div>
            </div>
            <hr>
        </div>
        <div class="toc">
            <p>
                <b>TOC</b>
            </p>

Я хотел бы вставить фрагмент HTML перед <div class="toc">... Итак, вопрос в том, как это решить? Я использую docbook 1.76.0. Я думаю, что должно быть что-то вроде следующего, чтобы решить эту проблему, но я не знаю, как установить шаблон вызова и т. Д.?

   <xsl:template name="xxxxxxx">
      <xsl:variable name="top-anchor">
        <xsl:call-template name="object.id">
          <xsl:with-param name="object" select="/*[1]"/>
        </xsl:call-template>
      </xsl:variable>
      <img src="images/pdfdoc.gif">PDF</img>
    </xsl:template>

person khmarbaise    schedule 12.10.2011    source источник
comment
Итак, исходя из вашего ввода, вы хотели бы иметь что-то вроде: ‹img src=images/pdfdoc.gif›PDF‹/img› в качестве родственного элемента ‹div class=toc›, хотя и до div?   -  person FailedDev    schedule 12.10.2011
comment
Вам нужно заставить Docbook выводить результат в правильно сформированном XML (XHTML) — вероятно, используйте Docbook для XSLT 2.0 и просто установите метод вывода на XHTML — и тогда вы можете применить модификацию правила идентификации, чтобы просто добавить новый элемент.   -  person Dimitre Novatchev    schedule 12.10.2011
comment
@FailedDev Нет. Я хотел бы получить его отдельно. Но, конечно, я могу поместить что-нибудь вокруг ‹img..›, например ‹div›...‹/div› Это не проблема. Но мне нужно, чтобы он был перед class=toc div и после div class=titlepage.   -  person khmarbaise    schedule 12.10.2011


Ответы (2)


Элемент <div class="toc"> создается шаблоном с именем «make.toc», который вызывается «division.toc» (в autotoc.xsl). Чтобы вывести что-то непосредственно перед этим <div>, вы можете переопределить шаблон "division.toc" в своем слое настройки. Просто скопируйте исходный шаблон и добавьте свой код, например:

<xsl:template name="division.toc">
  <xsl:param name="toc-context" select="."/>
  <xsl:param name="toc.title.p" select="true()"/>

  <img src="images/pdfdoc.gif" alt="PDF"/>    <!-- Your stuff here -->

  <xsl:call-template name="make.toc">
    ...
    ...
  </xsl:call-template>
</xsl:template>
person mzjn    schedule 15.10.2011

Я нашел правильное место для вставки кода, который мне нужен. В файле titlepage.templates.xsl я нашел правильное решение. Я просто взял фрагмент из titlepage.templates.xsl и улучшил его следующим образом:

<xsl:template name="book.titlepage.separator">
    <div class="subsubtile">
        <div class="pdflink">
            <a href="./xxxx.pdf" title="Hilfeseite als PDF-Dokument">
                <img src="images/pdfdoc.gif" border="0" alt="Hilfeseite als PDF-Dokument" />
                <br />
                PDF
            </a>
        </div>
    </div>
    <hr/>
</xsl:template>
person khmarbaise    schedule 16.10.2011