2010-01-13 11 views
9

Çerçevemizi msxml4'ten msxml6'ya taşımayı düşünüyoruz. Biz msxsl.exe henüz kullanımda nerede. Yalnızca MSXML sürümlerini 4.0'a kadar destekliyor gibi görünüyor, komut satırı msxsl.exe -u sürüm 6.0 bana anlatıyor. msxsl.exe dosyasının bir varisi var mı? Herhangi bir alternatif komut satırı işlemcisi?halefi?

cevap

6

Varolan işlemciyi değiştirmenin birkaç yolu vardır, yalnızca ihtiyacınız olan işlevsellik düzeyine ve MSXML'ye özgü işlevselliğe ihtiyacınız olup olmadığına bağlıdır. Örneğin, libxslt'nin bir parçası olan xsltproc vardır (örneğin, bazı pencere ikili dosyalarını here'dan edinebilirsiniz). This sayfa C# içinde hızlı bir değiştirme sağlar, ancak her ikisi de komut satırı kullanımını değiştirir ve aynı MSXML uzantılarını (xsltproc kesinlikle içermez) uygulamıyor olabilir.

MSXML 6 kullanan basit bir komut satırı işlemcisiyle ilgileniyorsanız, basit bir JScript uygulaması kullanmaktan daha kötüsü yapabilirsiniz. xsltr.js olarak aşağıdaki kodu kaydedin ve olarak çalıştırmak cscript msltr.js input.xml template.xsl çýktý.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); 
} 

Hala msxsl kullanamadığı bir mantık var mi? MSXML'nin 4.0 sürümü hiçbir zaman standart bir kurulum olmadı, bu yüzden her zaman el ile kurmanız gerekecekti (ancak Office ile bir noktada geldiğini düşünüyorum). İşlemi gerçekleştirmeniz gereken makinelere 4. sürüm dağıtmıyor musunuz?