Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt msxml transform()能否对输入和输出使用相同的缓冲区?_Xslt_Asp Classic_Transform_Msxml_Msxml6 - Fatal编程技术网

Xslt msxml transform()能否对输入和输出使用相同的缓冲区?

Xslt msxml transform()能否对输入和输出使用相同的缓冲区?,xslt,asp-classic,transform,msxml,msxml6,Xslt,Asp Classic,Transform,Msxml,Msxml6,我在VBScript下使用MSXML6.0转换方法,对一个或多或少传统的XML文档进行转换。设置如下所示: Set objXSL = CreateObject("MSXML2.FreeThreadedDOMDocument.6.0") objXSL.setProperty "AllowDocumentFunction",True objXSL.setProperty "AllowXsltScript",True objXSL.resolveExternals = True objXSL.asy

我在VBScript下使用MSXML6.0转换方法,对一个或多或少传统的XML文档进行转换。设置如下所示:

Set objXSL = CreateObject("MSXML2.FreeThreadedDOMDocument.6.0") 
objXSL.setProperty "AllowDocumentFunction",True
objXSL.setProperty "AllowXsltScript",True
objXSL.resolveExternals = True
objXSL.async = false
objXSL.load(Server.MapPath("MyStylesheet.xsl"))
Set xslTemplate = CreateObject("MSXML2.XSLTemplate.6.0") 
xslTemplate.setProperty "AllowXsltScript", True
xslTemplate.stylesheet = objXSL
Set xslProc = xslTemplate.createProcessor()
然后,我发出transform()方法命令,该命令需要输入和输出缓冲区,如

xslProc.input = objXmlDomInput
xslProc.output = objXmlDomOutput
xslProc.transform()

有没有办法告诉transform()对源和目标使用相同的缓冲区?现在,您的内存占用大约是原来的两倍。这给我带来了麻烦,结果是一个半大的DOM。在transform()完成后,如果输入一个对象基本上是一次性的,那么必须支持两个对象似乎是不雅观的。谢谢各位读者

我不确定您希望它如何工作,您希望转换操作输入吗?至于在内存中有两个DOM,您到底需要结果作为DOM,还是不能直接写入ASP响应或文件流?我真的不是VBScript方面的专家,如果你想在完成转换后释放输入,你能不能将代码放入一个局部变量只返回结果的函数中,这样输入就可以用于垃圾收集,而该函数已经执行了?嗨,Martin,我实际上是想简化这个问题,主要的一点是,在输出中创建结果之后,您不需要任何输入。另一点是,我实际上在一个循环中进行n次连续变换,所以一个步骤的输出成为下一个步骤的输入。因此,您必须将步骤1的输出复制到步骤2的输入。当你真的在追求“结果”时,似乎总是有两个对象围绕着你。也许我只是被困在了这个问题上。我用MSXML做了一个快速测试,将同一个DOM作为输入和输出,它似乎可以处理它(我只用transformNodeToObject进行了测试,不确定这是否有区别)。我还没有检查这是否以任何方式减少了内存消耗,或者这是否仅仅意味着API的使用与输入的内部副本一起工作,以便能够创建输出。我将对此进行研究,谢谢。如果可能的话,我会在这里报告我的发现。这是一个很好的线索,如果允许只对一个DOM进行操作,那么使用transformNoteToObject而不是基本转换。我认为有一些内部拷贝或比特和碎片,所以可能是内存消耗仍然存在风险。