我已经编写了一个样式表来加载第二个样式表并覆盖了一些内容。麻烦的是,要使用xsl:import
元素,我似乎需要知道我尝试导入的样式表的绝对路径。我怎么能绕过这个?
理想情况下,我不想将绝对路径放入样式表中。我想在命令行中传递它。这样,如果基本样式表移动,我就不必编辑我的样式表的所有。
我使用命令行Xalan-Java工具来应用XSLT。 A看了一下手册,但似乎没有任何类型的"看看这里的样式表"一种选择。
我还考虑过将基本路径作为XSL参数传递 - 但我不知道如何将其推入href
元素的xsl:import
属性...... < / p>
任何提示?当然,我不可能成为第一个想要这样做的人......
基本上我是使用DocBook编写文档的。我已经下载了官方DocBook XSL样式表的副本( huge ,包含数千个XSL文件)。对于我写的每个文档,我想制作一个小的XSL文件,它导入官方的DocBook XSL,然后调整一些设置(纸张大小等)
为了做到这一点,似乎我必须将官方DocBook XSL文件的路径硬编码到每个文档的本地XSL中。并且 意味着如果我更新到官方样式表的更新版本,我将不得不编辑我编写的每个自定义XSL [因为样式表版本号是在路径名]。
我喜欢要做的是将该路径硬编码到运行Xalan的脚本中。因此,如果样式表移动,我可以编辑一个脚本,并完成它。但我无法弄清楚如何做到这一点。我无法告诉Xalan在哪里寻找导入的样式表。
即使我使用相对路径,这些路径仍然具有硬编码的版本号。 Windows无法进行符号链接,所以......
答案 0 :(得分:0)
href属性可以是相对路径;只要基URI知道。
如果从命令行运行,那么“主”样式表的基本URI通常是已知的,因此这应该不是问题。我认为你需要更具体地说明你在做什么以及它是如何失败的。
答案 1 :(得分:0)
好的,我找到了 解决方案:
将一个XSL文件写入硬编码到其中的官方DocBook样式表的绝对路径。让所有自定义样式表从该导出样式表导入。 (显然你可以这样做。)
现在,如果官方样式表移动,我只需要编辑一个文件。
(这仍然意味着我需要能够找到魔术样式表。将它放在我保存所有文档的上面的文件夹中,这使得它成为一个简单的相对路径操作。)