問題タブ [exslt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
582 参照

xpath - XSLT-1.0のノードセットに対する二重反復

ブログ投稿を含むXMLがあります。各投稿にはdateノードが含まれています。

投稿が行われた年のリストを抽出して、派手な形式で印刷したいと思います。毎年、非常によく似た方法でアクティブな月のリストを印刷したいと思います。

外側の部分は私にとってはうまく機能しています。生のXSLT-1.0を使用してこれを実現する方法が見つからなかったため、EXSLTを使用して実装しました。投稿を繰り返し処理し、年を抽出して新しいyearノードに配置し、これを一時的なXMLツリーとして変数に格納します。次に、EXSLTを使用してこの変数からノードセットを作成し、それを繰り返し処理して重複を削除します。

ただし、毎年内部テンプレートを呼び出すとすぐに、最初のテンプレートから変数構築コードをコピーして貼り付けてダンプしても、出力は生成されません。同じノードセットを再度繰り返すことを拒否するだけです。

私はここで壁にぶつかっていて、正確に起こっていることに頭を包むことは絶対にできません。

これは私がスタイルシートを単純化することに成功したのと同じくらいです::

これは私のサンプル入力です::

これが私が得ている出力です::

0 投票する
1 に答える
168 参照

validation - XSLT - 検証

バックエンドから個々の詳細を取得する ESB (データパワー) ベースのサービスがあります。応答が SOAP メッセージの形式で ESB に返されると、応答に対していくつかの検証が行われます。検証後、応答は検証結果と共にフロントエンドに送り返されます。ここにはビジネス上の欠陥はありません。これについて次の質問があります-

  1. バックエンドから複数の個別のレコードが返されます。すべてのレコードに対して同じ検証を行う必要があります。XSLT または EXSLT でこの反復機能を実現するにはどうすればよいですか?

  2. 文字列値のリストに対して応答フィールド (文字列) をチェックするにはどうすればよいですか。AがBまたはCまたはDと等しい場合のように、これを行うか、あれを行います。

  3. 応答 XSD から直接検証 XSLT を生成するツールはありますか?

助けてください、それは生産環境であり、かなり緊急です。XSLT のバックグラウンドはまったくありません。

0 投票する
2 に答える
1059 参照

xml - xslt 1.0 での正規表現エラー

xslt 1.0 を使用して xml を変換しています。

私はこの文字列を持っています:

次のようにフォーマットしたい:

これを行うために、次の xslt を試しました。

しかし、それを実行すると次のエラーが発生します。

私は何を間違っていますか?

0 投票する
1 に答える
118 参照

xslt - Saxon EE SQL Extension で列名を取得する方法

Saxon EE XSLT プロセッサには、優れたSQL 拡張機能があります。SQL データベースから直接 XSLT に結果を取得できます。ただし、テーブルの列名を XML に取得できません。代わりに、次のような XML を使用します。

これを改善する方法はありますか?使用できるテクノロジに少し制限がありますが、それを可能にする別の XSLT プロセッサがある場合はお知らせください。

0 投票する
2 に答える
3067 参照

xslt - SOAPメッセージでXSLTを使用して名前空間URIを置き換えます

名前空間URIの一部を別の文字列に置き換えようとしている入力SOAPメッセージがあります。URI全体を別のURIに置き換えることはできますが、既存のURIを変更することはできません。「OLDSTRING」を探して「NEWSTRING」に置き換える必要があります。文字列VARIABLESTRINGは、入力xmlごとに異なるため、出力xmlにそのまま保持する必要があります。

入力XML:

出力XML:

次のXSLを試し、名前空間URIを変更できましたが、「OLDSTRING」のみを「NEWSTRING」に置き換え、残りの文字列をそのままにしておきたいと思います。

XSLT:

0 投票する
1 に答える
953 参照

xslt - EXSLT str:replace

EXSLT str:replace テンプレートを使用して XML を正しく変換する際に問題が発生しています。

ここに私のXMLがあります:

ここに私のXSLがあります:

私の問題は、XML ドキュメント ヘッダーだけを取得し、それ以外には何も取得しないことです。私は実用的な解決策から遠く離れているとは思いません。問題はおそらく、テンプレートの「一致」パラメーターに設定している値と、call-template with-param ノード内の選択パラメーターにあります。

どんな助けでも大歓迎です。

マイク

0 投票する
2 に答える
3162 参照

javascript - XSLT Javascript 拡張関数がノードセットを返すようにするにはどうすればよいですか?

javascriptで書かれたXSLT 1.0の拡張関数がノードセットを返す簡単な方法はありますか?
このために新しい Java クラスを作成することもできますが、スクリプト自体にいくつかのコードを追加するだけで済みます。
これが、すべてまたはほとんどの XSLT プロセッサでサポートされている別のスクリプト言語 (VB スクリプト? Groovy? C#?) で実行できる場合は、もちろんそれも問題ありません。

次の簡単なスクリプトがあります。

これは文字列を返すため、Xpath 式で関数を呼び出すのに問題はありません。
私が欲しいのは、ノードセットの結果です。しかし、スクリプトを次のように変更すると

配列がノードセットに自動的に変換されないため、関数を呼び出すとエラーが発生します。

arrays-with-java-xslt-extensionsを見ましたが、それは、このために新しいクラスを作成する行にあるため、今のところ避けたいと思っています。

では、配列をノードセットに変換し、関数呼び出しを Xpath 式で使用できるようにするには、どのステートメントをスクリプトに追加する必要があるでしょうか?

0 投票する
1 に答える
484 参照

javascript - javascript xpaths で使用される exslt エクステンションの使用

exslt 拡張機能を使用して Web アプリで JavaScript XPath を使用したいのですが、これを行う方法がわかりません。

いくつかの div を含む html ドキュメントを持っているふりをします。これを実行したい:

その結果、評価で無効な XPath 式の例外が発生します。私はクロムを使用しています。

これを機能させるために他に何かする必要がありますか? javascript の実装があることを exslt.org で確認しましたが、それらが利用可能であることを確認するにはどうすればよいですか? javascript を dom の名前空間付きスクリプト要素に挿入する必要がありますか?

アップデート

ブラウザの dom + javascript と xpath を直接使用してこれができない場合、ブラウザで exslt 拡張機能を使用して XSLT を記述し、document.evaluate (xpath に一致する要素のリストを返す) をシミュレートすることは可能でしょうか?

0 投票する
1 に答える
2958 参照

xslt - 略語を展開するための XSL でのマップの使用

マップの作成に関する同様の質問を見ました。

その答えには次のコードがあります:

出力コマンドを置き換えて、XML 内の値を使用して、それがマップ内のキーであるかどうかを確認し、それを値に置き換えたいと考えています。

マップ上で for-each 選択を行い、contains と比較する最良の方法はありますか?

XML のスニペットを次に示します。

コンテンツ ノードの値には、完全な値に置き換えたい略語を含む文字列が含まれている場合があります。

ありがとう、ポール

0 投票する
3 に答える
1597 参照

xslt - exsl:node-set は何をルート ノードとして扱いますか?

exsl:node-set 関数の仕組みがわかりません。

exsl:node-set に動的に入力するために展開して使用している XML があります。現在、この形式であるとしましょう:

これは必要に応じて機能し、$wrapNodeSet を出力すると、上記のノード マークアップが表示されます。ルート ノード名は、name($wrapNodeSet/*) を使用して「ノード」として表示されます。

ここで、これを拡張して 2 つのノードを持ち、ノードセットを動的に設定する必要があります。そう:

ノード セットの出力にはノード要素が含まれますが、ルート ノードの名前の出力は「ノード」に変更されます。

ノード要素がまだ出力されている理由を誰かが説明できますか?