2011-12-03 6 views
2

Silverlightで行う方法はありますか。XslCompiledTransformは完全な.NETで何をしますか?
System.Xml.Xsl名前空間は、明らかにSLでは完全ではありません。SilverlightでのXSL変換

答えて

1

単純な答えは次のとおりです。あなたがしたいと思う理由を想像するのも難しいですが、私はあなたが持っている必要があると確信しています。

に既存のXSLトランスフォームを実際に使用する必要がある場合、Silverlightアプリケーションはブラウザで実行するように設計されているため、ホストブラウザでトランスフォームを実行することができます。

例えば、IEのために使用することができます: -

HtmlPage.Window.Eval(@ "function transform(xml, xsl) 
{ 
    var xmlDOM = new ActiveXObject("MSXML2.DOMDocument.3.0"); 
    xmlDOM.LoadXML(xml); 
    var xslDOM = new ActiveObject("MSXML2.DOMDocument.3.0"); 
    xslDOM.LoadXML(xsl); 

    return xmlDOM.transformNode(xslDOM); 
}"); 

今二つの文字列、XMLおよび使用XSL与えられた: - あなたは、このクロスブラウザを作るためにもちろん

string result = HtmlPage.Window.Invoke("transform", xmlString, xslString) as string; 

をブラウザを検出し、変換関数に正しいコードを注入する必要があります。ブラウザによっては、他のブラウザよりも多くのフープでジャンプすることができますが、実行することができます。

+0

@_AnthonyWJones:Saxon CEで動作し、XSLT 2.0を使用するのと同様の方法をOPと一般の人々に示すことは興味深いかもしれません。そのようなことが可能であることを知るだけです。 :) –

+0

@ DimitreNovatchev:Silverlight用の "Saxon CE"ライブラリはありますか?そうではないようです。この質問のコンテキストで興味のあるSilverlight XAPの一部として他のXSLTプロセッサを提供する方法があったとしても、私はそこにいるとは思わない。 – AnthonyWJones

+0

@_AnthonyWJones:私はあなたがIEが理解する任意のJavascriptコードを使用できると思っていました。そうであれば、SaxonCEを開始することができます。 @Michael Kayはもちろん、サクソンの権威ある人です。 –