2008-09-15 16 views
2

クライアント側(ブラウザベース)のXSL変換を支援するために、XML埋め込みJavaScriptを実行することは可能ですか?どのようにして公式なのでしょうか?クライアントサイドXSL処理のJavaScript?

MicrosoftのXML DOMオブジェクトは、サーバー側(ASP/ASP.NET)でこれを許可しています。

明確化:私はHTMLのDOMスクリプティングを意味するものではありませんが後を行っ文書が変換され、また私は、ブラウザ(例えば何W3Schoolsのページショー)でJavaScriptによってを開始しXSL変換を意味しています。私は、変換中にXSL内にある実際のスクリプトブロックを参照しています。

答えて

4

変換の補助のためにJavaScriptを埋め込むには、< xsl:script >を使用できますが、MicrosoftのXMLオブジェクトの実装にはit is limitedを使用できます。ここにはexample

スクリプトがあります。XML

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="scripted.xsl"?> 
<data a="v"> 
    ding dong 
</data> 

scripted.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> 
<html xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 
<xsl:script implements-prefix="local" language="JScript"><![CDATA[ 

    function Title() 
    { 
     return "Scripted"; 
    } 

    function Body(text) 
    { 
     return "/" + text + "/"; 
    } 

]]></xsl:script> 
<head> 
    <title><xsl:eval>Title()</xsl:eval></title> 
</head> 
<body> 
    <xsl:for-each select="/data"><xsl:eval>Body(nodeTypedValue)</xsl:eval></xsl:for-each> 
</body> 
</html> 

のInternet Explorer(またはあなただけのCOM/.NETからMSXMLを使用した場合)の結果は次のとおりです。

<html> 
<head> 
    <title>Scripted</titlte> 
</head> 
<body> 
    /ding dong/ 
</body> 
</html> 

通常のXSLテンプレート構造をサポートしていないようで、ルートノードを追加すると、MSXMLは動作しない標準モードに移行します。

標準のXSLに同等の機能があるかどうかはわかりませんが、私は夢見ることができます。

2

XML文書に埋め込まれたJavaScriptコードを実行することはできません。 Heliosのように、JavaScriptを使って変換を行うことができます。

JavaScriptはほとんどの場合、通常はのXSL変換が行われた後にの後に使用されます。私が正しく理解していれば、XMLに実行可能な<スクリプト>タグが必要です。

変換をさらに制御する必要がある場合は、XSLパラメータとテンプレートを使用できます。これらの値はXSLTで設定し、exec()に渡すことができます。 MozillaはXSLでsetting parametersをサポートしていますが、他のブラウザについてはわかりません。

また、クロスブラウザJavaScript/XSLTは首に痛みがあります。 Mozilla's JavaScript/XSLT interfaceIE'sと大きく異なるので、jQuery's XSLTのようなブラウザに依存しないライブラリに依存したいと思うかもしれません。

1

「公式」が「標準ベース」を意味する場合は、あなたが探しているものを見つけることはできません。あなたが記述しているのは、スタイルシートの解析中に解析されて実行されるユーザーエージェントスクリプト言語です。あなたの目的がJavascriptで汚い作業を行うことでXSLTを単純化することであれば、javascriptでXSLTを生成し、クラスラッパーを使用してブラウザのXSLTパーサー経由で結果を解析する方がよい場合があります。

これはもちろん、あなたが署名したものよりもはるかに多くの作業ですが、あなたがそうしたいと確信しているならば、私はJohn Resig's Javascript Micro-Templatesを見て、テンプレートフレンドリーなXSLTをあなたのJavaScriptに動的に保存します。

関連する問題