【发布时间】:2020-07-02 00:02:20
【问题描述】:
我在开发者控制台 (ms visual studio) 中使用 xsltc.exe。我尝试生成一个可以在 .NET 项目中使用的 DLL。
xsltc /settings:dtd /settings:document /settings:script /c:Bk24.Specs specs.xsl /out:Bk24Specs.dll
我之前已经成功生成了很多这样的DLL,但是现在我遇到了一个大问题。当前 XSL 包含对 XML 的引用
<xsl:variable name="spcodes" select="document('specialCodes.xml')/list/data" />
我成功地为这个模板生成了 DLL。我在 .NET 项目中添加了对此 DLL 的引用。但随后,应用程序抛出异常
找不到文件 (c:\projects\bk24\specialCodes.xml)
在真实的生产环境中。当然,在客户的工作站上没有C:\projects\bk24\ 这样的目录。这是我的开发机器上的目录,但是当我运行 xsltc.exe 时,我将 specialCodes.xml 放入放置 XSL 的同一目录中。我希望xsltc.exe查看目录,发现XSL和XML在同一个目录,所以,生成器会将XML嵌入到这个DLL中,但是,似乎不是......
我该如何解决这个问题?
【问题讨论】:
-
您可以在 XSLT 中做的是将其他 XML 内联为参数或变量,例如
<xsl:variable name="spcodes-rtf"><list><data>a</data><data>b</data></list></xsl:variable>然后使用(对于像 XslCompiledTransform 支持的 XSLT 1)<xsl:variable name="spcodes" xmlns:exsl="http://exslt.org/common" select="exslt:node-set($spcodes-rtf)/list/data"/>。 -
@MartinHonnen 非常感谢!这正是对我的帮助!