【问题标题】:DocBook XML, Between File Link Structure? TOC?DocBook XML,文件链接结构之间?目录?
【发布时间】:2012-08-14 16:49:25
【问题描述】:

我已将一堆老式演示文件转换为 Docbook XML,每个文件都按预期显示。我打算将它们转换为 XHTML/HTML ,我的测试转换看起来很棒。我唯一的问题是如何使用链接创建适当的目录结构,我只是不确定要考虑什么过程。例如...我希望在页面的页脚上有指向其他转换后的 Docbook 页面的链接。如果有人有想法要考虑,我将不胜感激。

此外,关于 XSLT,我正在使用 xsltproc,它只支持 XSLT 1.0 + 常见的 EXSLT 模块。 xsltproc 是 libxslt 的命令行界面,它仍然不支持 XSLT 2.0。尽管具体的例子很棒,但我真的需要知道一般的方法。有了这些信息,我可以进一步搜索,最终找到具体的例子。

【问题讨论】:

  • 您使用DocBook-XSL 还是其他样式表?
  • 我确实使用 DocBook-XSL 将 DocBooks 转换为 XHTML。我最终可能会对其进行自定义,或者可能会在转换后创建另一个 XSL 来处理。
  • @TechZilla,您需要就不同 HTML 文件的命名和目录结构建立约定。从 filename1.html 到 filename2.html 的链接可以很简单:<a href="filename2.html">filename2</a> -- 如果所有文件都在同一个目录中。
  • @Dimitre Novatchev:感谢您的意见,因为我知道您是一位真正的 XSLT 专家。 ...无论如何...我所有的 Docbook XML 文件都以相当可靠的约定命名。例如,它们被命名为/1/file.xml,这些值与这些 XML 行相关,<refentrytitle>FILE</refentrytitle> <volnum>1</volnum>
  • @Dimitre Novatchev:所以它们并不完全在同一个目录中,而且标题通常大小写错误,但在所有 Docbook XML 文件中都是一致的。示例 Docbook XML 片段,它将链接到另一个页面,<citerefentry><refentrytitle>FILE2</refentrytitle><volnum>1</volnum></citerefentry>

标签: xml xslt xhtml docbook


【解决方案1】:

鉴于此 XML 源文档

<ref>
    <refentrytitle>FILE</refentrytitle>
    <volnum>1</volnum>
</ref>

那么这个变换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vU" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
 <xsl:variable name="vL" select="'abcdefghijklmnopqrstuvwxyz'"/>

 <xsl:template match="ref">
   <a href="/{volnum}/{translate(refentrytitle, $vU, $vL)}.xml">
     <xsl:value-of select="refentrytitle"/>
   </a>
 </xsl:template>
</xsl:stylesheet>

产生想要的正确结果

<a href="/1/file.xml">FILE</a>

【讨论】:

    【解决方案2】:

    XSLT 2.0 由 Saxon 9、XmlPrime 或 AltovaXML 等处理器支持,您可以使用 xsl:result-documenthttp://www.w3.org/TR/xslt20/#creating-result-trees 使用一个样式表创建多个结果文档。通常您使用模式http://www.w3.org/TR/xslt20/#modes 处理输入节点两次甚至更多次,其中一种模式创建单独的页面,第二种模式创建目录。

    【讨论】:

    • 我应该提到我正在使用 XSLT 1.0,有可能 libxslt 实现了 EXSLT。另外创建许多页面不是问题,因为我已经创建了许多正确命名的页面。我试图了解它们是如何联系在一起的。目的是创建 XHTML 页面,带有指向其他 XHTML 转换页面的页脚链接。
    • 如果 TOC 能以某种方式提供我指定的功能,请详细说明如何处理。
    猜你喜欢
    • 2013-12-15
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多