【问题标题】:Certain element for docbook table does not get written by stylesheet文档表的某些元素不会由样式表写入
【发布时间】:2018-03-30 17:04:19
【问题描述】:

我目前正在使用 XSLT 样式表将 XML 文档转换为 docbook 文档。该文档必须包含相当多的表格,其中一些表格的格式非常复杂。在编写 docbook 时,我通常会通过添加如下描述来格式化表格单元格

<?dbhtml bgcolor="#EEEEEE" ?>

这通常可以正常工作。但是,我没有找到从转换过程中打印出这部分文档的方法。

这是其中一个模板:

<xsl:template match="//ns:chapter" priority="5">
    <sect1 xml:id="sec1.xyz">
        <title>Chapter tbd</title>
        <para>introduction</para>

        <table frame="all">
            <title>Table</title>
            <tgroup cols="2">
                <colspec colname="c1" colnum="1" colwidth="2*"/>
                <colspec colname="c2" colnum="2" colwidth="8*"/>
                <tbody>
                    <xsl:for-each select="//ns:myElement[not(@classID=preceding::ns:myElement/@classID)]">
                        <xsl:variable name="outerElement" select="."/>
                        <row>
                            <entry namest="c1" nameend="c2" align="center"><?dbhtml bgcolor="#EEEEEE" ?>Class 
                                <xsl:value-of select="current()/@classID"/>: 
                                <xsl:value-of select="current()/@classTitle"/>
                            </entry>
                        </row>
                        <xsl:for-each select="//ns:myElement[@classID=$outerElement/@classID]">
                            <row>
                                <entry>
                                    <xsl:value-of select="current()/@id"/>
                                </entry>
                                <entry>
                                    <xsl:value-of select="current()/@title"/>
                                </entry>
                            </row>
                        </xsl:for-each>
                    </xsl:for-each>
                </tbody>
            </tgroup>
        </table>
    </sect1>
</xsl:template>

该模板效果很好,可以打印出 docbook 中的表格。然而,这部分被简单地忽略了。

我以某种方式理解为什么会发生这种情况(显然

有没有人给我任何提示,我该如何解决这个问题?!

谢谢 诺伯特

编辑:
作为一个最小的工作示例:尝试对包含至少一个元素的任何 XML 文档使用以下样式表。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="*">
  <?dbhtml bgcolor="#EEEEEE" ?>
    </xsl:template>
</xsl:stylesheet>

【问题讨论】:

  • 如果您能针对您的情况提供minimal reproducible example,那就太好了。
  • 我希望我的问题足够清楚,但现在添加了一个最小的工作示例。
  • 你不是在帮我一个忙,而是你自己(我希望)。
  • 是的,我明白 :-) 感谢您编辑代码以使其看起来更好

标签: xml xslt docbook


【解决方案1】:

这是您可以使用 XSLT 创建为 &lt;xsl:processing-instruction name="dbhtml"&gt;bgcolor="#EEEEEE"&lt;/xsl:processing-instruction&gt; 的处理指令。见https://www.w3.org/TR/xslt-30/#creating-processing-instructions

【讨论】:

  • 非常感谢!一旦我知道我必须搜索什么,现在一切都变得清晰了!
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多