我怎样才能改变d:formalpara的html渲染

时间:2015-11-04 09:21:23

标签: xslt docbook

这是默认配置呈现formalpara的方式:

这样:

<formalpara>
  <title>foo</title>
  <para>bar</para>
</formalpara>

将呈现为:

<p>
  <span class="formalpara-title">foo</span>
  bar
</p>

我已经设置了<xsl:param name="runinhead.default.title.end.punct"></xsl:param>,因此愚蠢的点不再被渲染。

这就是我真正想要的:

<div class="formalpara">
  <h2 class="title">foo</h2>
  <p>bar</p>
</div>

这是我到目前为止所做的:

我改变了:

<xsl:template match="d:formalpara">
  <xsl:call-template name="paragraph">

.....

</xsl:template>

为:

<xsl:template match="d:formalpara">
  <xsl:call-template name="block.object">

.....

</xsl:template>

我改变了:

<xsl:template match="d:formalpara/d:title|d:formalpara/d:info/d:title">

.....

  <span class="formalpara-title">

  .....

  </span>
</xsl:template>

为:

<xsl:template match="d:formalpara/d:title|d:formalpara/d:info/d:title">

.....

  <h2 class="title">

  .....

  </h2>
</xsl:template>

这将是现在呈现的内容:

<div class="formalpara">
  <h2 xmlns:d="http://docbook.org/ns/docbook" class="title">foo</h2>
  bar
</div>

我的实际问题是什么?

  1. 为什么xmlns:d="http://docbook.org/ns/docbook"会被渲染?
  2. 如何在<p>附近获得bar标记?

1 个答案:

答案 0 :(得分:0)

您应该能够通过在xmlns:d="http://docbook.org/ns/docbook"(分别为h2)元素上添加exclude-result-prefixes="d"来避免xsl:stylesheet元素上的命名空间声明xsl:transform。< / p>

我会假设添加

<xsl:template match="d:formalpara/d:para">
  <p>
    <xsl:apply-templates/>
  </p>
</xsl:template>

确保转换para的{​​{1}}元素子元素,但我没有检查它是否有效。