我如何更改 html 的 d:formalpara 渲染

how can i change the html rendering of d: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. 如何在我的 bar 周围添加 <p> 标签?

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

我假设添加

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

确保 formalparapara 子元素的转换,但我还没有检查它是否有效。