問題タブ [apply-templates]
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.
xslt - XSLの「call-template」と「apply-templates」の違いは何ですか?
私はXSLTを初めて使用するので、2つのタグについて少し混乱しています。
と
では、それらの違いをリストアップできますか?
xslt - xsl:apply-templates による文字列処理
私はこのようなxmlを持っています、
親をレンダリングするときに改行とインデントを保持する必要がありますが、すべての子タグにも強調表示テンプレートを適用する必要があります。
ここで、親タグの内容を変数に取り込んで XSL で文字列処理を行うと、基になる xml 構造が失われ、強調表示テンプレートを子に適用できなくなります。
一方、親タグに含まれるテキストの改行とインデントを保持する他の方法は考えられません。
何か案は?
xslt - XSLT apply-templates の再帰性は破滅的です!
XML ドキュメント構造に従う必要があります。
物事を DRY に保つために、共通のオプション セットを共有するいくつかの異なる質問を用意することが考えられます。これらは、XSLT を使用して構築できます。私のテンプレートは次のとおりです。
一番上のテンプレートが私の質問と一致すると、次のようなものが残るという考えです。
...次に、下部のテンプレートと一致させて、HTML ドキュメントに挿入できます。私の質問は、実際にそれを行う (トップ) テンプレートをどのように作成するかです。私は近くにいますが、これはまだ機能していません:
変換された質問ブロックとそのオプションは、最上位のテンプレートによって取得されてきれいな HTML に変換されるのではなく、ドキュメントにコピーされます。
しようとすると<xsl:apply-templates select="."/>
、無限ループに陥ります。
xml - 同じ XML 要素の異なるテンプレートを同じレベルでレンダリングする
XML:
同じ要素に対して 2 つの異なるテンプレートを適用するために生成しようとしています。
メイン テンプレート:
最初のテンプレートにモードを追加すると、両方ともレンダリングされません。
また試しました:
別のテンプレートを次のように適用します。
2 つのうちの 1 つだけ (指定されたモードを持つ最初のものがレンダリングされます)。すなわち
レンダリングしない
または
<xsl:template match="Elements" mode="Different" />
2 回レンダリングします。
これを修正するにはどうすればよいですか? 私が調査したところはどこでも、モードを優先することを提案しています。非常に多くのプログラマーが使用しているので、単純なものでなければなりませんか?
xslt - XSLT 1.0: テンプレートの適用とテンプレート モード
次の XML があります。
item
タグ内に要素がある場合があります<LINE_FREE_STOCK>
。その場合は、出力 XML に追加の位置を作成する必要があります。
今、私はこのスタイルシートを思いつきました:
この(単純化された)必要な出力が作成されます。
804-008165 と 804-008161 は 2 回表示されます。1 回は標準アイテムとして、もう 1 回はそれぞれの数量の無料在庫アイテムとして表示されます。
しかし、私はここで何かを忘れましたか?私が見ていない落とし穴のようなものはありますか?その XSLT は十分に堅牢ですか?
xslt - 変数の関数でxslt動的/条件付きapply-template?
ユーザーが望む機能に応じて、2 つの異なる XSLT 変換を表示したいと考えています。XSL ファイル全体は、1 行を除いて同じです。
この行はそのままである必要があります
またはそのまま
私の最初のアイデアは、2 つの異なる .xsl ファイルを作成し、それら (javascript) を変数値の関数として適用することでした。
ただし、それは単なる行であり、1 つのファイルのみを維持したいと考えています。私はこのようなことをしたいと思います
しかし、うまくいきません。
xsl:apply-templates の機能「モード」を試してみると、このコードはどちらも機能しません
-> http://www.xsltcake.com/slices/sgWUFu/2
- xsl:choose を xsl:stylesheet の子にすることはできないため、このコードは正しくありません
解決済み(以下で改善)、これは私が欲しかったものを作るコードです
改善: 最終的なコードは、重複するコードが大幅に減り、読みやすくなってい ます。
apply-template 呼び出しは必要なので保持していますが、それらがなければ (元のコードのように、コメントを参照してください)、さらに単純になります。
答えてくれただけでなく、XSLTを教えてくれてありがとう:)
xml - XSLT 適用テンプレートと文字列操作
次のような XML があります。
XML を変更することはできません。段落の先頭にある (5) を削除し、親タグで number 属性を使用して、適切なマークアップで新しい段落番号を作成する必要があります。
問題は、段落の残りの部分に、例のリンク タグなど、変換が必要な XML がさらに含まれている可能性があることです。
substring-after 関数を使用すると、これにテンプレートを適用する方法がわかりません。
xml - xslt 内で生成された要素で xslt テンプレートを呼び出す
したがって、XSLT のアイデンティティ デザイン パターンを使用しています。
そして、さまざまなノードに一致する多くのテンプレートがあります。今私がやりたいことは、1 つの xsl:template 内にいくつかのコードを生成し、別の xsl:template を新たに生成されたコードと一致させることです。これを行う方法を知っている人はいますか?
私がやりたいことの例:
xml - XML および XSLT 適用テンプレートの選択
XML ファイルは次のとおりです。
XSLT ファイルは次のとおりです。
出力は次のとおりです。
XSLT のルートの開始
スーパーバイザーブレイクコントロール
XSLT のルートの終わり
私の質問は、Alexis と Employee2 が出力に含まれないのはなぜですか? それらは両方とも<person>
要素の下にあります.....
xslt - xsl:copy 内の選択されていないすべての要素に対してテンプレートの適用を実行するにはどうすればよいですか?
次の XSLT があるとします。
DTS:Variable などの他のノード タイプがある場合、それらは apply-templates ステートメントで選択されないため、生成された XML から除外されることを認識しています。
私の質問は、前の apply-templates ステートメントで指定されていないすべての要素を選択する apply-templates ステートメントでコピーを終了するにはどうすればよいですか?
私は次のようなことを試しました:
しかし、それはうまくいかないようです。