這是一個適用於所有XPath和XSLT天才的項目!帶數組的XPath XSLT條件處理
這是一個來自XLIFF文件的摘錄,我需要刪除標籤之間的文本,其中屬性值與任何一個id數字相匹配,但重要的是,只有當它位於特定標籤邊界內時,<target>
標籤纔是精確。
這對於XSLT和你的一位大師來說可能是一個簡單的任務,但它是關於我最後的手段,現在一直在試圖用Perl來處理這個問題,由於在多行上正反兩方面的爭執, 。
例如(請參閱下面的更全面的示例),我需要刪除<emp>
標記(其中pid =「569」和pid =「570」)之間的文本,但僅限嵌套在<target>
標記中。 <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節點,而igroups不是最高級別的。
例如,在我們有[569 570 587]的pid數組中,只有那些<target>
節點,其中<emp>
具有與需要處理的pid相匹配的屬性「pid」。例如,必須刪除內部文本,包括任何嵌入的標籤,只留下<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。 –
嗨邁克爾,謝謝你的看法和道歉,如果我的術語不正確 - 我沒有經驗的XPath或XSLT。當我說有嵌入式標籤時,請看一下上面針對'emp'標籤內't'標籤的結構。我正是這個意思。可以使用XSLT 1.0或2.0,我將在Perl腳本中運行它。 – user3012857