如何从 html2 转换创建的输出的元素中删除命名空间

How to remove namespace from a an element of html2 transform created output

是否可以从 html2 使用名为 org.dita4publishers.html2

的插件转换输出生成的输出中删除名称空间

我已经生成了从 dita 到 html2 的输出,我正在为 fig

我正在从 html2 transform

获取输出
<div xmlns="http://www.w3.org/1999/xhtml" class="fignone" id="call1">
<div class="figbody">
<img xmlns="" src="images/imag1.png"></img>
</div>
<span class="figcap"><span class="enumeration fig-enumeration">Figure 1. </span>Nursing image</span></div>

但我想像这样排除命名空间

<div class="fignone" id="call1">
<div class="figbody">
<img xmlns="" src="images/imag1.png"></img>
</div>
<span class="figcap"><span class="enumeration fig-enumeration">Figure 1. </span>Nursing image</span></div>

我正在使用模板

生成 css 链接
<xsl:template match="*" mode="chapterHead">
   <head><xsl:value-of select="$newline"/>
     <!-- initial meta information -->
   <link rel="stylesheet" type="text/css" href="css/care.css"/><xsl:value-of select="$newline"/>
   </head>
   <xsl:value-of select="$newline"/>
 </xsl:template>

但是生成这样的输出

<head>
<link rel="stylesheet" type="text/css" href="care.css"></link>
</head>

它忽略了 / 之前的文本,也忽略了 /

我希望输出为

<head>
<link rel="stylesheet" type="text/css" href="css/care.css"></link>
</head>

请就这些问题给我建议。

注意:我也使用了 exclude-result-prefixes="#all"。但它不起作用。

提前致谢

您描述的问题有误。就 XDM 数据模型而言,您不想从输出中 "remove a namespace",您希望输出中的每个元素都位于与其当前所在的名称空间不同的名称空间中。(具体来说,您希望它不在命名空间中)。这会影响创建元素的每条指令。因此,实现这一点的最简单方法可能是对当前输出进行 post 处理传递,使用模板规则

更改名称空间
<xsl:template match="*">
  <xsl:element name="{local-name()}">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>