2012-12-06 44 views
0

我有几个具有公共代码的XSL转换。通用代码由用exslt的函数扩展构建的函数组成。现在我想将这些功能外包到一个库中,以使它们更易于维护。使用函数库而不使用<import>或<include>

转换被编译为可执行文件作为资源,并在需要时从内存读取。我想保持这种方式,并使用相同的机制为图书馆。原因是,可执行文件总是知道它们在哪里,并且不需要路径配置。
现在我的问题是:如何导入一个外部样式表,它是作为字符串给出的,并且不作为文件提供?

解决此问题的一种方法是将样式表写入临时文件并包含这些文件。问题在于,每次都会改变临时文件的文件名,所以我将不得不操纵主要转换以包含tempfiles名称。在这种情况下,参数不起作用。

关于如何解决这个问题的任何想法,哪些应该是微不足道的?

环境:libxml2,libxslt(xslt 1.0),exslt扩展,​​Linux。

感谢,
约斯特

+1

您需要阅读有关您的平台上可用的XML解析器。 –

+1

在Java世界中,这是通过使用带有虚拟URI的xsl:include来完成的,并提供了一个URIResolver作为一个回调过程,该过程的任务是将URI解析为实际资源。我不知道libxslt是否提供了类似的机制。 –

回答

0

感谢Dimitre和迈克尔推我在正确的方向。

的的URIResolver机制被称为libxml的 “目录”,并向前伸直作品(以一个简单的用例):

  1. 包括 “中的libxml/catalog.h”
  2. 初始化系统目录,使用函数 “xmlInitializeCatalog”
  3. 使用 “xmlCatalogAdd” 添加分辨率映射
  4. 清理,使用 “xmlCatalogCleanup”

感谢您的提示,
Jost