我想知道是否有一种方法可以在Delphi / C ++ Builder中创建预编译的XLST转换,就像您可以使用xsltc.exe
实用程序在.NET中生成的那样,例如:
http://my-tech-talk.blogspot.mx/2009/03/using-precompiled-xslt-in-net.html
现在我将XSLT加载到_di_IXMLDocument
,然后使用该实例调用DocumentElement->TransformNode
来转换原始XML。这工作正常,但我想删除对外部文件集的依赖,在最好的情况下,它位于我的应用程序文件夹的某个地方,或者,在通常情况下,驻留在第三方Web服务器上,具有关联风险(无法连接,缓慢等)。
XSLT文件与其他XSLT有内部依赖关系,因此我无法将此文件打包到资源中并在运行时加载它(可以吗?如果可能的话,我想知道如何,因为那也是我问题的有效解决方案)。作为参考,这是"主要" XSLT:
http://www.sat.gob.mx/sitio_internet/cfd/3/cadenaoriginal_3_2/cadenaoriginal_3_2.xslt
由于
答案 0 :(得分:0)
使用资源文件(由@MartinHonnen建议)允许删除外部依赖项,尽管该过程仍然像外部文件一样完成,即XSLT未预编译。
这是我解决这个问题的步骤:
TResourceStream
LoadFromFile
,而不是使用LoadFromStream
将XSLT加载到XML中,使用import random
x = int(raw_input("Number: "))
y = random.randint(1,6)
while x == y:
y=random.randint(1,6)
,使用上一步中创建的资源流。这解决了主要问题:删除外部文件(本地或远程)的依赖项。如果对原始XSLT文件集进行更改,则需要重新创建独立的XSLT和资源。