これはすべてあなたのXPathとXSLTの天才のためのものです!XPath XSLT配列による条件付き処理
これは、属性値がID番号の配列のいずれかと一致するタグ間のテキストを削除する必要があるが、重要なことに特定のタグ境界内にある場合にのみ、<target>
タグを正確。
これはXSLTとあなたの指導者のための簡単な作業かもしれませんが、私の最後の手段は、複数の行にわたる肯定的および否定的な解決策との闘いのために十分に信頼できないPerlでこれを処理しようと苦労したことです。
以下のスニペットの例(詳細は下の例をご覧ください)タグの中に入れ子になっている場合のみ、pid = "569"とpid = "570"の<emp>
タグの間のテキストを削除する必要があります。 <alt-source<t><emp>
ツリー内の、同じくpid = "569"、pid = "570"のテキストもそのまま残す必要があります。
<alt-source>
<t id="4507">
<emp ptype="para" pid="569">Q27a.</emp>
<emp ptype="para" pid="570">
<t id="4516">Before 1996</t><t id="4537"> [this/that] </t>did not exist</emp>
</t>
</alt-source>
<target>
<t id="4507">
<emp ptype="para" pid="569">Q27a.</emp>
<emp ptype="para" pid="570">
<t id="4516">Before 1996</t><t id="4537"> [this/that] </t>did not exist</emp>
</t>
</target>
内のテキストにもタグが埋め込まれていて、空白の違いがあることに注意してください。 <target>
ツリーには、最終的には<igroup>
のように、複数の「一致する」アイテムが存在する可能性があります。このファイルには数千のigroupノードが含まれ、igroupは最上位ではありません。
たとえば、pidの配列では、[p595]があるので、これらのpidに一致する属性「pid」を持つ<target>
ノードのみが処理される必要があります。埋め込みタグを含めて、内部テキストを削除する必要があります。たとえば、ちょうど<emp ptype="para" pid="587"></emp>
です。
これはXSLTでも可能ですか?
ご協力いただければ幸いです!
<igroup>
<source>
<t id="4612">3 times per day or more</t>
</source>
<alt-source>
<t id="4612">
<emp ptype="para" pid="585">3 times per day or more</emp>
</t>
</alt-source>
<target>
<t id="4612">
<emp ptype="para" pid="585">3 fois par jour ou plus</emp>
</t>
</target>
<igroup>
<igroup>
<source>
<t id="4507">Q27a. </t><t id="4516">Before 1996</t><t id="4537"> [this/that] </t>did not exist</emp>
</source>
<alt-source>
<t id="4507">
<emp ptype="para" pid="569">Q27a.</emp>
<emp ptype="para" pid="570">
<t id="4516">Before 1996</t><t id="4537"> [this/that] </t>did not exist</emp>
</t>
</alt-source>
<target>
<t id="4507">
<emp ptype="para" pid="569">Q27a.</emp>
<emp ptype="para" pid="570">
<t id="4516">Before 1996</t><t id="4537"> [this/that] </t>did not exist</emp>
</t>
</target>
</igroup>
<igroup>
<source>a.</source>
<alt-source>
<emp ptype="para" pid="586">a.</emp>
<emp ptype="para" pid="587">b.</emp>
<emp ptype="para" pid="588">c.</emp>
</alt-source>
<target>
<emp ptype="para" pid="586">a.</emp>
<emp ptype="para" pid="587">b.</emp>
<emp ptype="para" pid="588">c.</emp>
</target>
</igroup>
私はあなたの質問を理解していません。期待される出力を見ることは助けになるかもしれませんが、あなたの用語はすべて間違っています。たとえば、テキストに「埋め込みタグ」を含めることはできません。 - P.S. XSLT 1.0または2.0を使用しているかどうかを明記してください。 –
こんにちはMichael、私の用語が正しくない場合は、お探ししていただきありがとうございます。私はXPathやXSLTに慣れていません。埋め込みタグがあると言うと、 'emp'タグの中にある' t'タグのための上記の構造を見てください。それが私の言いたいことです。 XSLT 1.0または2.0を使用することができます。私はこれをPerlスクリプトの中で実行します。 – user3012857