問題タブ [xslt-grouping]
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 - 複数のテーブルを XSLT で一度に出力する
XML ドキュメントがあります。
私がやりたいことは、XSL で 3 つのテーブルを作成することです。ヘッダーは子要素の名前 (1 回のみ)、サブヘッダーは孫要素の名前 (1 回のみ) で、残りの行と列には値が入力されます。孫要素の。
これは私が得た限りです:
これは出力です:
(出典: UploadScreenshot.com )
何が起こっているかというと、サブ要素ごとに新しいテーブルが作成されるたびに、3 つのテーブルすべてを自動的に作成し、ヘッダーとサブヘッダーを作成し、その後データを入力するスマート コードが必要です。 . 私が欲しいのは次のようなものです(色とテキストのフォーマットは無視してください):
XSLT コードで実行したいのは、要素インスタンスごとに 1 つのテーブルを作成し、要素の名前をヘッダーとして配置した後、サブ要素をヘッダーとして 1 回配置してから、テーブルにデータを入力することです。
xml - XSLT並べ替え-属性を持つ親ノード内のxml子ノードを並べ替える方法
単純なこととして始まったものは、XSLTnoobにとって非常に厄介であることが判明しました。
子ノード/降順をソートしようとしていますが、親ノードに属性を追加した後、VS2010でデバッグするときにエラーが発生します。
"Attribute and namespace nodes cannot be added to the parent element after a text, comment, pi, or sub-element node has already been added."
この単純なXMLがあるとします。
XPATHをxmldatasourceに渡して、関連する<year>
ノード(2013など)を取得します。次に、postidを使用して子<post>
ノードを降順で並べ替える必要があるため<year value=2013>
、レンダリング時にpostid=10050が最初に表示されます。
したがって、明確にするために、私は1つの<year>
ノード内での並べ替えにのみ関心があります。
ノードを別々のノードに分割する前(つまり、xmlは/ posts / postでした)、次のXSLTが機能しました。
上記のエラーが原因で、実行時にxmldatasourceが空になりました。昇順を順番に渡すと、同じxmlが明らかに返されます(変換なし)
質問:親ノード属性()に対応するために上記の(または新しい)XSLTを更新する方法は<year value="">
?調査の結果、「要素作成の前に属性作成を追加する必要がある」との回答がありました。これは、デバッガーを監視するのと同じように意味があります。子ノードはdesc順に形成されますが、yearタグにはその属性がありません。しかし、私はXSLTについて本当に手がかりを持っていません。複雑すぎるのはわかりませんが、言語がわからないだけです。
どんな助けでも、大いに感謝します。ありがとう
html - ドロップダウンリストにXMLノードの個別の値のみを入力します
既存のXMLデータファイルで機能する検索フィルターを作成しようとしています。まず、ドロップダウンリストボックスにノードの1つからの一意の値だけを表示しようとしています。
XMLファイルの例は次の場所にあります... http://kirk.rapweb.co.uk/testing/filter/tidy/plain/products.xml
XSLTを使用してXMLをより読みやすい形式で表示することができました... http://kirk.rapweb.co.uk/testing/filter/tidy/products.xml
フィルタを適用した同じデータ... http://kirk.rapweb.co.uk/testing/filter/tidy/filter/products.xml
フィルターで除外された最初のドロップダウンリストボックスにリストしたい値... http://kirk.rapweb.co.uk/testing/filter/tidy/distinct/products.xml
HTMLページに取り込まれたすべてのデータ... http://kirk.rapweb.co.uk/testing/filter/tidy/html/
http://kirk.rapweb.co.uk/testing/filter/tidy/distinct/products.xmlから HTMLページのドロップダウンリストボックスにデータを取得する方法を見つけるのに苦労してい ます。
誰かがアドバイスを提供したり、私を正しい方向に向けたり、私が正しい方向に進んでいることを確認したりできますか?
私が達成しようとしている最終結果は、2つのドロップダウンボックスを持つことです。
ドロップダウンリスト1には...ブレーキ、排気、照明が含まれます
ドロップダウンリスト2には...が含まれます。
- 以前にブレーキが選択されていた場合...ディスクとドラム、パッドと靴。
- 以前にエキゾーストが選択されていた場合...センター、リア。
- 以前に照明が選択されていた場合...ヘッドランプ、リアライト。
今は、ドロップダウンボックス1に上記のデータを入力することに焦点を当てたいと思います。
xml - XSLT 1.0 最高値を持つ一意のノードを見つける
私は XSLT 1.0 の初心者です。最高値を持つ一意のノードを見つけようとしたときに問題に直面しています。
ソース XML:
上記の XML に示すように、AB 出発地の往復結果があり、両方のフライトのチケットを購入する予定です。合計運賃、料金 (両方のフライトのいずれか高い方)、およびその合計金額を計算する必要があります。
期待される出力:
ここ、
TotalFare
Fare
すべてのタグの合計です。TotalFee
各乗客タイプの大きい値は、そのタイプの乗客数を掛けたものです。- 例: ADT の場合、手数料の値が 25 で、ADT の数が 2 であるため、ADT の合計料金は 50 です。CHD の場合、料金の値が 25 で、CHD の数が 1 であるため、CHD の合計料金は 25 です。これにより、最終的な合計料金 = 75 になります。 .
TotalPrice
ToatalFare
とTotalFee
属性の合計です。
以下のXSLTで試しました。
XSLT:
以下の出力を得ました。
出力:
TotalFee
正しく計算されません。助けてください。ありがとう。
templates - テンプレートを呼び出すことによるxsltグループ化
私はxsltを初めて使用し、キーとテンプレートを使用してグループ化を学習する方法を学ぼうとしています。
誰かがxsltで次のことを行う方法について私を助けてもらえますか?変換を行うには、別のテンプレートからテンプレートを呼び出す必要があります。
ありがとう
これが私のxmlです。
そして、これがその後の様子です。
xslt - キーを使用したXSLTGROUPBY
次の階層(DIVISION、DESK、STRATEGY)のテーブルであるHTML出力を生成しようとしています。Division列とDesk列にrowspanを設定する必要があります。1つの部門に複数のデスクを配置し、1つのデスクに複数の戦略を配置することができます。
キーを使用して、Division、Deskによるグループ化を定義しています。除算では機能しますが、デスクでは機能しません。お知らせ下さい。
xmlコード:
xslt:
xslt - XSLT を使用して要素をラップしていますが、最後に一致した要素が含まれていません
古い XML ファイルを新しい改良された構造に変換しようとしています。この一部では、いくつかの緩い要素を親コンテナーにラップし、それらの子を変更する必要があります
古い構造
新体制
私はこの答えを見つけて、私のニーズに合わせて少し修正しました:
しかし、私の出力は次のとおりです。
PHP5 の組み込み XSLTProcessor オブジェクトを使用しています。すべての XML と XSL はバージョン 1.0 です。
xml - XSLT を使用して XML から HTML テーブルを作成しようとしています
XSLTに苦労しています。私は手続き型の土地で立ち往生しています。基本的に、次のようなデータベースから生成される XML があります。
私は、各センサーが列であり、各行が次のように左側にある時間で、HTMLテーブルの測定値で終わろうとしています:
タイムスロットの順序は昇順であることが保証されているため、並べ替える必要はありませんが (1000 の可能性があります)、問題は、各タイムスロット内でセンサーの順序を保証できないことです。テーブル ヘッダーの作成に使用したセンサーを毎回ループし、スロットを反復処理するときに各スロットから正しいセンサーを選択します。これは機能しませんが、おそらく私がやろうとしたことを得るでしょう(なぜ機能しないのかがわかりました..変数は私が期待したように動作しません!): -
数百または数千ものタイムスロットが存在する可能性がありますが、これはほんの一例です。XML の階層を調整することもできますが、データベース クエリを大幅に修正しない限り、各タイム スロット内にセンサーを配置することはできません。それが必要ないことを願っています。
もともと、スロットが次のように区切られた XML がありました。
これには、はるかに単純なデータベースクエリが含まれていました! ここでは順序を保証できますが、使用している XQuery プロセッサ (Qt の QXmlQuery) は for-each-group をサポートしていないため、時間に基づいてグループ化する方法を見つけることができませんでした。
申し訳ありませんが、これはとても長いです。誰かが少なくとも私を正しい方向に向けるのを手伝ってくれることを願っています.
ありがとう。
xml - xsltを使用して要素をグループ化する
xslファイルで「groupby」関数を使用したいのですが、エラーが発生します。
これは私のコードです:
エラーはこれです:
msxml3.dllエラー'80004005'
「キーワードテーブルにxsl:for-each-groupが含まれていない可能性があります」。
xmlは次のとおりです。
xslt - XSL 1.0 の二重グループ化
これが私の最初の質問です。
XSL 1.0 を使用してこの xml を変換したい:
これに:
Muenchian Method を使用してみましたが、これでは GROUP でのみ並べ替えることができ、並べ替えた結果を SUBGROUP で並べ替えることができませんでした。グループ/サブグループごとに 1 回だけヘッダーを表示する必要があることに注意してください。
@ CMスペルバーグ・マックイーン
テキストの壁を投稿したくありませんでしたが、それが役立つ場合は、次のようにします。
これは私が試した解決策の1つです:
preceiding-sibling を使用して SUBGROUP を表示するかどうかをテストしようとしましたが、ノードを反復処理することは不可能であることがわかったため、おそらく適切なアプローチではありません。