問題タブ [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.
wpf - WPF でプログラムから CustomControl の要素にアクセスする
グリッドを 1 つだけ持つカスタム コントロールを作成しました。
これがコードの一部ですGeneric.xaml
対応MainView.cs
は次のとおりです。
別のプロジェクトを作成したので、このカスタム コントロールをプログラムでパネルの 1 つに含めたいと思います。
これは、この CustomControl を動的に作成したかった別のプロジェクトの .cs ファイルで行ったことです。
正確に私が欲しいのは、CustomControl
動的に作成してから追加したいということTabItem
です。Grid
そのため、プログラムでアクセスしCustomControl
て追加したいと考えてDataGrid
います。ただしOnApplyTemplate()
、Custom コントロールが画面に表示されている場合にのみ呼び出されます。私の場合、"MainViewGrid is null"
この場合、MainView CustomControl の要素にアクセスするにはどうすればよいか、という例外を与えてOnApplyTemplate()
、Grid を「見つけて」DataGrid を追加できるようにします。
xslt - 孫のすべてのトークンに対して node() を複製し、孫の要素テキストを XSLT 1.0 のトークンで置き換えますか?
私の(簡略化された)入力XML は次のようになります。
term
複数のマテリアルのカンマ区切りのリスト ( ) が含まれる場合があることに注意してくださいmetal, glass
。
望ましい出力:
を分割し、そのためのすべての属性とノードを使用しmaterial/term
て祖父母を複製する必要があります。Material
1 つ目MaterialGroup
は、区切られた孫要素内のトークンごとにコピーされmaterial/term
、term
テキストはトークン テキストに設定されます。material.parts
そのままmaterial.notes
コピーできます。
私のスタイルシート:
実際の出力:
トークン ( metal
、 ) は、以下の子glass
としてテキスト要素として発生します。実際に表示されるテキスト要素 ( ) は変更されていません。MaterialGroup
material.parts
material/term
同様の問題に対するいくつかの解決策を見ましたが、成功しませんでした:
https://stackoverflow.com/a/5480198/2044940
https://stackoverflow.com/a/10430719/2044940
http://codesequoia.wordpress.com/2012/02/15/xslt-example-add-a- new-node-to-elements/
...
何か案は?
編集:マイケルが提案したモードなしのMartinによるソリューション:
xslt - この XSLT の適切な選択属性は何ですか ``タグ?
xslt を使用して、json への SOAP 応答をレンダリングしています。私は石鹸サービスを制御できません。
を使用<xsl:apply-templates>
していくつかの要素を処理できますが、テンプレートの 1 つを機能させることができません。を使用して動作してい<xsl:for-each>
ます。
ソース XML
次のように、各ドキュメントの主な属性を取り出して、<a:DocumentMetaDataEntry>
要素を「フラット化」する必要があります。
望ましい出力
次の XSLT は私が望むものを与えてくれますが、単純化して 2 番目<xsl:for-each>
(可能であれば最初のものも!)を削除したいと思います。
作業中の XSLT
2 番目の for-each を次のようなテンプレートに置き換えたいのですが、一致させることができません。
機能しない XSLT
これが非常に単純であることはわかっていますが、ここや他の場所でかなりの時間を費やしてきたので、テンプレートがどのように機能するかについて頭を悩ませることはできません。
タグの適切な選択属性は何ですか?<xsl:apply-templates>
最初の for-each も置き換えることができれば、素晴らしいボーナスのエーテル象...
xml - 関数から返された文字列に XSLT テンプレートを適用する
(ここのすべてのコードは元のバージョンから単純化されています)
私の会社には、XSLT (1.0) で使用される関数があり、ファイル システムからファイルのコンテンツを返します。を使用して関数の戻り値を解析できる必要がありますapply-templates
。次の例を検討してください。
メイン XML ファイル:
外部 XML ファイル:
次の XSLT をメインの XML ファイルに適用してみました。
XSLT:
結果は単に「デフォルトのイメージ」でした。
すべてのノード (または何か) の値だけでなく、XML 構造を取得していることを確認するために、次のことを試しました。
元の外部 XML ファイル構造を返したもの:
私も試しました:
期待どおり「path/to/image.png」を返しました。
最後に、この質問の回答に基づいて、次の XSLT を試しました。
出力はオリジナルと同じでしたapply-template
。
apply-templates
関数から返された値に適用する方法はありますか? copy-of
文字列を、に明確に送信し、value-of
さらに xpath を実行することもできます。私は単にそれを使用しないことはできapply-templates
ますか?
選択した回答の説明
結局のところ、私の問題の解決策は非常に具体的でした (同じテンプレートに一致するノードにテンプレートを適用していましたが、提供したコードの単純化されたバージョンからは明らかではありません)。私は本当にこれで-1を獲得しました。 とにかく、 keshlamの答えは、私の問題だと思っていたことに答えるので、将来この質問にアクセスする人々にとって最も役立つと思います。
xml - レコードをコピーし、XSLT を使用して xml に 2 回書き込む
XSL を使用して xml レコードを 2 回コピーする必要があります。XMLは次のようになります
<data>
<record>
<a>ABC</a>
<b>ABC</b>
<c>ARUN</c>
<d>JAY</d>
<e>SHREE</e>
<f>MAKU</f>
<z>MACK</z>
</record>
</data>
条件は IF(a=b) で、2 つのレコード、つまり a,b,c,d,e,z と 2 番目のレコード、つまり a,b,c,d,f,z を作成する必要があります。および IF(a!=b) は、1 つのレコード、つまり a、b、c、d、f、z よりも優れています。私は後半を完了しましたが、レコードを 2 回書き込むことができません。
私のXSLは次のようになります:-
レコードを2回書くのを手伝ってくれませんか。