問題タブ [nodesets]
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.
xml - ノードセットの長さ
XLST では、ノードセットの長さをどのように調べますか?
xml - xpathを使用してノードセット内のノードの位置を検索します
無駄に遊んだ後position()
、私は解決策を探し回っていて、私の問題をほぼ説明しているこの古いスタックオーバーフローの質問に到達しました。
違いは、位置を指定したいノードセットが、ドキュメントの連続したセクションではなく、動的であるということです。
説明のために、リンクされた質問の例を変更して、要件に一致させます。<b>
各要素は異なる要素内にあることに注意してください<a>
。これは重要なビットです。
ここで、クエリを実行すると、XPath fora/b
を使用して、4つのノードのノードセットを取得し<b>
ます。次に、文字列を含むノードのノードセット内の位置を見つけたいと思います'tsr'
。他の投稿の解決策はここで分解されます:コンテキストノードセットではなくドキュメントをナビゲートしているためにcount(a/b[.='tsr']/preceding-sibling::*)+1
戻ります。1
preceding-sibling
コンテキストノードセット内で作業することは可能ですか?
java - Java の XPath NodeSet
私は日食でこのコードを持っています
NodeSetでコンパイル時エラーが発生します。
これらは私が輸入したものです。なぜこれを行っているのか教えていただけますか?
performance - XSLT 1.0: ノードセット内のエントリを制限する
XSLT に比較的慣れていないので、単純な質問であることを願っています。私はいくつかのフラットな XML ファイルを持っていますが、これはかなり大きくなる可能性があり (例: 7MB)、「より階層化」する必要があります。たとえば、フラット XML は次のようになります。
最終的には次のようになります。
私はこれのために動作する XSLT を持っており、基本的にすべての b 要素のノードセットを取得し、「following-sibling」軸を使用して、現在の b ノードに続くノードのノードセットを取得します (つまり、following-sibling::* [position()=$nodePos])。次に、再帰を使用して、別の b 要素が見つかるまで兄弟を結果ツリーに追加します (もちろん、より汎用的にするためにパラメーター化しました)。
また、次の b ノードの XML 内の位置を送信し、*[position() = $nodePos] 選択を介して (再帰を使用して) 次々にノードを選択するソリューションもあります。
問題は、XML ファイルのサイズが大きくなると、変換の実行時間が許容できないほど長くなることです。XML Spy で調べてみると、それぞれのメソッドで時間がかかるのは「following-sibling」と「position()=」のようです。
私が本当に必要としているのは、上記の選択でノードの数を制限する方法です。そのため、実行される比較が少なくなります。位置がテストされるたびに、ノードセット内のすべてのノードがテストされ、その位置が正しいかどうかが確認されます。それを行う方法はありますか?他の提案はありますか?
ありがとう、
マイク
xpath - この XPath 手法はすべての状況で信頼できますか?
ユーザー定義の XPath 式を受け入れ、ランタイム操作の一部として使用するアプリケーションを開発しています。
ただし、式をプログラムで操作することにより、いくつかの追加データを推測できるようにしたいと考えています。また、このアプローチが失敗する可能性がある状況があるかどうかを知りたいと思っています。
ノード セットを返すユーザー定義の XPath 式が与えられた場合、それを XPathcount()
関数でラップしてセット内のノード数を決定しても安全ですか。
同様に、式に配列インデックスを追加して、セット内のノードの 1 つを抽出しても安全ですか。
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 ピースであることに気付きましたが、出力列挙型を表示する必要がある部分であり、必要な場所に取得したら、他の場所での表示を停止する方法を知っています。
date - 最小日付と最大日付を抽出する XSL 変換
XML ソースから最小日付と最大日付を抽出しようとしています。変数にノードセットを取得していますが、ノード内の実際の日付値が必要ですが、それを取得する方法が見つかりません。
ソース XML:
XSL コード:
日付は、並べ替えと取得をサポートするために正しくフォーマットされています。問題は、変数が入力されると、それらの値にアクセスする方法が見つからないことです。
xml - xPath 選択的ノードセット
次のようなドキュメントがあります。
xsl では、次のようにしてこのノードセットを簡単に取得できます。
ただし、私が抱えている問題は、次のようなノードセットを形成するために満たさなければならない条件があることです。
たとえば、上記のルールに従って、特定の xpath からこの結果を取得する必要があります。
これを達成できるifステートメントを使用してxpathを作成する方法、またはノードセットの内容をチェックして別のノードが見つかった場合に1つのノードを削除できるxslコードを作成する方法はありますか?