Xml 使用函数库而不使用<;进口>;或<;包括>;

Xml 使用函数库而不使用<;进口>;或<;包括>;,xml,xslt,libxslt,Xml,Xslt,Libxslt,我有几个XSL转换,它们有共同的代码。通用代码由使用exslt函数扩展构建的函数组成。现在我想将这些函数外包到一个库中,以使它们更易于维护 这些转换作为资源编译成可执行文件,并在需要时从内存中读取。我希望保持这种方式,并对库使用相同的机制。原因是,可执行文件总是知道它们在哪里,不需要路径配置。 现在我的问题是:如何导入外部样式表,它是作为字符串提供的,而不是作为文件提供的 解决此问题的一种方法是将样式表写入临时文件并将其包含在内。问题是,临时文件的文件名每次都会更改,因此我必须操作主转换以包含t

我有几个XSL转换,它们有共同的代码。通用代码由使用exslt函数扩展构建的函数组成。现在我想将这些函数外包到一个库中,以使它们更易于维护

这些转换作为资源编译成可执行文件,并在需要时从内存中读取。我希望保持这种方式,并对库使用相同的机制。原因是,可执行文件总是知道它们在哪里,不需要路径配置。
现在我的问题是:如何导入外部样式表,它是作为字符串提供的,而不是作为文件提供的

解决此问题的一种方法是将样式表写入临时文件并将其包含在内。问题是,临时文件的文件名每次都会更改,因此我必须操作主转换以包含tempfiles名称。参数在这种情况下不起作用

关于如何解决这个问题,哪一个应该是琐碎的,有什么想法吗

环境:libxml2、libxslt(xslt1.0)、exslt扩展、Linux

谢谢,

乔斯特

感谢迪米特和迈克尔把我推向了正确的方向

URIResolver机制在libxml中被称为“catalog”,它可以直接工作(对于简单的用例):

  • 包括“libxml/catalog.h”
  • 使用函数“xmlInitializeCatalog”初始化系统目录
  • 使用“xmlCatalogAdd”添加分辨率映射
  • 使用“xmlCatalogCleanup”进行清理
  • 感谢您的提示,

    Jost

    您需要了解平台上可用的XML解析器。在Java世界中,这是通过使用xsl:include和一个伪URI,并提供一个URIResolver作为回调过程来完成的,该回调过程负责将URI解析为实际资源。我不知道libxslt是否提供了类似的机制。