프레임 워크를 msxml4에서 msxml6으로 마이그레이션하려고합니다. 우리는 msxsl.exe를 아직 사용하지 않습니다. 명령 줄 msxsl.exe -u 버전 6.0 이 나와서 4.0까지의 MSXML 버전 만 지원하는 것으로 보입니다. msxsl.exe의 후속 버전이 있습니까? 대체 명령 줄 프로세서가 있습니까?msxsl.exe의 후속 버전?
9
A
답변
6
기존 프로세서를 대체 할 수있는 방법에는 여러 가지가 있으며 필요한 기능 수준과 MSXML 특정 기능의 필요 여부에 따라 달라집니다. 예를 들어 xsltproc은 libxslt의 일부입니다 (예 : here에서 일부 Windows 바이너리를 얻을 수 있음). This 페이지에서 C#을 빠르게 대체 할 수 있지만 명령 줄 사용이 변경되고 동일한 MSXML 확장이 구현되지 않을 수도 있습니다 (xsltproc는 그렇지 않습니다).
MSXML 6을 사용하는 간단한 명령 줄 프로세서에 관심이 있다면 간단한 JScript 응용 프로그램을 사용하는 것보다 더 나쁠 수 있습니다. xsltr.js으로 다음 코드를 저장하고 으로 실행에서 cscript msltr.js input.xml template.xsl 경우 output.txt :
var adTypeBinary = 1;
var adSaveCreateOverWrite = 2;
var adSaveCreateNotExist = 1;
try
{
var args = WScript.Arguments;
if(args.length < 3)
{
WScript.Echo("Usage: xsltr.js file.xml file.xsl output.txt");
WScript.Quit(1);
}
else
{
var xml = args(0);
var xsl = args(1);
var out = args(2);
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
var xslDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
/* Create a binary IStream */
var outDoc = new ActiveXObject("ADODB.Stream");
outDoc.type = adTypeBinary;
outDoc.open();
if(xmlDoc.load(xml) == false)
{
throw new Error("Could not load XML document " + xmlDoc.parseError.reason);
}
if(xslDoc.load(xsl) == false)
{
throw new Error("Could not load XSL document " + xslDoc.parseError.reason);
}
xmlDoc.transformNodeToObject(xslDoc, outDoc);
outDoc.SaveToFile(out, adSaveCreateOverWrite);
}
}
catch(e)
{
WScript.Echo(e.message);
WScript.Quit(1);
}
여전히 당신이 msxsl를 사용할 수있는 근거가된다? 버전 4.0의 MSXML은 표준 설치 프로그램이 아니므로 항상 수동으로 설치해야합니다 (한 번에 Office와 함께 온 것 같지만). 처리가 필요한 컴퓨터에 버전 4를 배포 할 수 없습니까?