問題タブ [node-set]

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 投票する
5 に答える
8733 参照

xslt - ノードセットへの結果ツリーフラグメント:すべてのxslエンジンの一般的なアプローチ

別のスレッドに答える(stackoverflow:cssカラースキームの生成を参照)私は以下の問題にぶつかりました。そこでは、異なるxslエンジンが、結果ツリーフラグメントをノードセットに変換する際に異なるアプローチを必要とするようです。

問題を単純化するために(ただし、この背後にある完全なストーリーについては上記のリンクを参照してください)、色の値のリストを含むインラインツリーが必要です。これはXpath式で使用する必要があるため、MSXML xx xslエンジン専用のノードセットを作成する必要がありました(XML Spy組み込みでは、rtfとして構築された変数を含むXpath式の解釈に問題がありませんでした)。
さらに別のスレッドスタックオーバーフロー:automating-exsltnode-setが私を助けてくれました。結果のノードセットは、入力XMLから新しい変数rtfを作成する際に使用されます。
繰り返しになりますが、MSXMLはXpath式で新しい変数が使用されると文句を言うので、node-set関数を使用してそこからノードセットを作成しました。
これまでのところ良好であり、MSXMLxxはエラーを発生しなくなりました。
しかし、XMLSpyビルトインまたはSaxon9heで同じものを実行すると、別のエラーが発生します。ノードセット関数が不明であるようです。

この特定の例では、この2段階のアプローチは必要ありませんが、前述したように、物事を単純化したことに注意してください。すべてのxslエンジンで機能するXSLT1.0変換を作成する方法を知りたいだけです。

私が使用したXSLT:

入力ファイル:

MSXML 3.0 / 4.0 /6.0の結果:

Saxon9heの結果:

結果として、XMLSpy組み込みxslエンジンになります。

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

xslt - を使用して、結果ツリーフラグメントからノードセット変数を構築します

xsl:choose(MSXML エンジンで使用するために) を使用して rtf からノード セット変数を作成することは可能ですか?

私は次の構造を持っています:

std:colorListもちろん木の断片です。上記は正常に動作し、コードは 2 つの代替案で同じですが、それほど大きくないため問題ありません。
しかし、より大きなコード フラグメントの場合、最初に rtf に基づいて変数を宣言してからコードを実行することで、コードの重複を回避できるかどうか疑問に思います。何かのようなもの

しかし、これは正しく機能しません。MSXMLcolorListはノード セットではないというエラーを出すため、xsl:for-each.

実際の例では、変数に「コピー」std:colorListしたため、このエラーは発生しなかったことに注意してください。colorListどうやらこれは実行時エラーではなく、xsl 解析エラーです。
以外のものを使用する必要がありxsl:copy-ofますか? または、同じことを達成する別の方法はありますか?

ご参考までに、std:colorList内容は次のとおりです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

xslt - XSLT変数で作成されたノードからの値をsum()するにはどうすればよいですか?

変数の値を合計するのに問題があります。

XSLTソース

XMLソース:

これで結果が出ると思っていたのですが、得られるのは「NaN」だけです

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

xslt - XRTreeFrag から XNodeSet にキャストできません

次のテストコードがあります...ノードセットをパラメータとして渡そうとしています。何時間も経って、ようやくテンプレートに渡すことができました。

ノードセットをテンプレートに渡す方法:

私のテンプレートがそれを受け取る方法:

ワンライナーでパラメーターを設定すると、文句はありません...例:

しかし、このように設定しようとするとすぐに壊れます:

次のエラー メッセージが表示されます: org.apache.xpath.objects.XRTreeFrag は org.apache.xpath.objects.XNodeSet にキャストできません

2000 年にさかのぼる別のスレッドを見つけることができただけで、この同様の問題について話しています... node-set($customData)/* のようなものを使用してノードセットを再設定する必要がありますが、それを試してみたところ、ダメ。

編集: OK、テンプレート内のノードセットを正常に渡したことを確認できます。しかし、私はまだそれを自分の変数にコピーできません...それはまだRTFであると言い続けました。

上記のテストは、$customData と元の /data に問題なくアクセスできることを示しています。どちらもレコードを表示していますが、$data が台無しになっています。つまり、$customData から $data へのコピーが機能していなかったということです...

次の方法を試しましたが、どれも機能しません。

何か案が...?

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

android - Android:AndroidのXSLT変換にxxx:node-set()を使用する方法

デスクトップブラウザでXMLを変換するのに成功したXSLファイルがあります。そのXSLTでは、EXLT node-set()関数を使用しています。
Androidで同じXSLファイルを使用して同じXMLファイルを変換しようとすると、「XPATH式のエラー」というエラーがスローされ、node-set()関数を呼び出している行が示されます。
Androidでxxx:node-set()を使用する方法について何かアイデアはありますか?

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

xml - XSLT 2.0、enum という名前の祖先::子要素を子孫から再帰的に取得する

更新: 2012 年 9 月 18 日、午後遅く 101.(a) はここに余分であり、私が必要とするものの上の祖先::*[@belcode] です。それらは以下の XML サンプルにありますが、それらを取得しない方法を理解できませんでした。

不適切な XML 出力のサンプル:

ベルコードを使用した for-each のみが正しく動作しない XSL:


更新: 2012 年 9 月 18 日 提供されたコードをテストしましたが、外部条件が機能していませんでした... また、XSLT 2.0 を使用しているため、for-each は必要ありません。

QUITE が機能しない (先祖が多すぎる) 新しい XML 出力ですが正しい p 要素でのみ取得しています:

非常に近い XSLT コードであり、より多くの作業が必要なのは「だと思います」。belcode 属性を持つ最初の祖先からのみ子列挙型要素を取得する必要があり、テキスト要素の親の子である列挙型に戻ります。

value-of の * を、必要な最上位の祖先を返すものに置き換える必要があると考えています。私は XPath/XSLT にかなり慣れていないため、構文と戦っています。


可能なアドバイスをよろしくお願いします。

コードを持ち、display-inline="yes-display を持たない祖先に到達するまで、subclause-text ノードからツリーを上に移動するにはどうすればよいですか (要素テキストには名前を付けていないことを約束します)。 -inline」で、すべての子「enum」を包括的に取得しますか? 途中のすべての祖先要素にもヘッダーまたはテキストの子はありませんが、列挙型はあります。(はい、XML の例があります)。

バックグラウンド:

セクション/サブセクション/パラグラフ/サブパラグラフ/節 (それぞれに列挙型、ヘッダー、テキストの子を含めることもできます) を使用して XML入力をネストしました。これはフラット化されて、使用されたものとは異なるスタイルの「p」でいっぱいのセクションを出力します。 「enum」、「header」、「text」がすべて「p」に入れられるサブレベルになります。

私が問題を抱えているのは、以下のサンプルのように、1 つ以上のレベルの列挙しかない場合があることです。出力段落は、「ヘッダー」または「テキスト」のない最初のレベルのコード属性 (スタイルに変換されたもの) を取得することになっています。 「p」ラッパーが出力を取得するため、フラット化が適切に行われます。英語にすると、 (p style="P20")(e)(1)(A) が必要です。

ネストされた XML 入力:

望ましい出力:

私が得ている出力:

機能しない XSL スニペット:

これは単なる //subparagraph/text ピースであることに気付きましたが、出力列挙型を表示する必要がある部分であり、必要な場所に取得したら、他の場所での表示を停止する方法を知っています。

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

xquery - XQuery ノードはシーケンスです

is-node-in-sequence-deep-equalXQuery にありますか? xqueryfunctions.comで関数を見たことがあるので疑問に思っていますが、使用できません。

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

xslt - exsl:node-set の合計が正しくない値を返す

私はいくつかのxslを書いて、いくつかのxmlコードを作成し、それを合計しました。コードは次のとおりです。

結果は次のとおりです: すべて: 96363464029561 年: 2005 値: 73837

数値のリスト (All: 出力から) は次のとおりです: 9636 3460 29561 合計は 42657 になるはずです。数値は xml で正しいのに、なぜ合計が正しくないのですか? よろしくお願いします。