2

クライアント側 (ブラウザベース) の XSL 変換を支援するために、XML が埋め込まれた JavaScript を実行することは可能ですか? それはどのように行われ、どのように公式ですか?

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

明確化:ドキュメントが変換された後に実行される HTML DOM スクリプティングのことでも、ブラウザーで JavaScriptによって開始されるXSL 変換のことでもありません(たとえば、W3Schools ページに表示されるもの)。変換中に XSL 内にある実際のスクリプト ブロックについて言及しています。

4

4 に答える 4

4

変換を支援するためにJavaScriptを埋め込むには、<xsl:script>を使用できますが、これはMicrosoftのXMLオブジェクトの実装に限定されています。次にを示します。

scripted.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に同等の機能があるかどうかはわかりませんが、夢見ることはできます。

于 2008-09-16T17:31:36.607 に答える
2

XML ドキュメント内に埋め込まれた JavaScript コードを実行することはできないと思います。同様に、helios が述べたように、JavaScript を使用して変換を実行できます。

ほとんどの場合、JavaScript は CDATA として埋め込まれ、通常は XSL 変換が行われた後に使用されます。私の理解が正しければ、XML に実行可能な <script> タグが必要です。

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

また、クロスブラウザーの JavaScript/XSLT は首の痛みです。Mozilla の JavaScript/XSLT インターフェースはIE のものとは大きく異なるため、 jQuery の XSLT のようなブラウザに依存しないライブラリに依存することをお勧めします。

于 2008-09-15T20:28:06.770 に答える
1

「公式」が「標準ベース」を意味する場合、探しているものが見つかるとは思えません。あなたが説明するのは、スタイルシートの解析中に解析および実行されるユーザーエージェントスクリプト言語です。Javascript で面倒な作業を行って XSLT を単純化することが目的である場合は、JavaScript で XSLT を生成してから、クラス ラッパーを使用してブラウザー独自の XSLT パーサーを介して結果を解析する方がよい場合があります。

もちろん、これはおそらくあなたがサインオンしているよりもはるかに多くの作業ですが、そうすることに確信がある場合は、John Resig の Javascript Micro-Templatesを参照して、テンプレートに適した XSLT を JavaScript に動的に保存してください。

于 2008-09-15T20:29:44.177 に答える
1

はい。ブラウザに依存しますが、Javascript を使用できます。w3schools.com に小さいながらも実用的なチュートリアルがあります。これは XSLT チュートリアルの一部です。

ページ:

http://www.w3schools.com/xsl/xsl_client.asp

XSLT チュートリアル:

http://www.w3schools.com/xsl/default.asp

あのサイトは私よりも役に立ちます。幸運を!

于 2008-09-15T19:38:15.143 に答える