이것은 모든 XPath 및 XSLT 천재를위한 것입니다!XPath XSLT 조건부 처리 배열
이것은 XLIFF 파일에서 추출한 것으로, 속성 값이 ID 번호 배열과 일치하는 태그 사이의 텍스트를 삭제해야하지만 중요한 것은 특정 태그 경계 내에있는 경우에만 <target>
태그가 있어야합니다. 정확한.
이것은 XSLT와 전문가 중 한 명에게 간단한 작업 일지 모르지만 이제는 내 마지막 수단에 대해 여러 줄에 걸쳐 긍정적이고 부정적인 둘러보기로 인해 충분히 안정적이지 않은 Perl로이 문제를 처리하려고 애 쓰고 있습니다. .
아래의 스 니펫에서 예를 들어 (아래의 풀러 예 참조) 태그 내에 중첩되어있는 경우에만 <emp>
태그와 pid = "569"및 pid = "570"태그 사이의 텍스트를 제거해야합니다. <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>
내부의 텍스트에도 태그가 삽입 될 수 있으며 공백이있을 수 있습니다. 아래의 <igroup>
마지막 부분의 <target>
트리에는 둘 이상의 "일치하는"항목이있을 수 있습니다. 이 파일에는 수천 개의 igroup 노드가있을 수 있으며 igroup은 최상위 수준이 아닙니다.
예를 들어 pid 배열에서 우리는 [569 570 587]을 가지므로 <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>
나는 당신의 질문을 이해하지 않습니다. 기대되는 결과물을 보는 것이 도움이 될 수 있지만 용어는 모두 잘못되었습니다. 예를 들어 텍스트에는 '포함 태그'를 사용할 수 없습니다. - 추신 XSLT 1.0 또는 2.0을 사용하고 있는지 명시하십시오. –
안녕하세요, Michael입니다. 제 용어가 정확하지 않은 경우에 고마워합니다. XPath 또는 XSLT에 익숙하지 않습니다. 내장 태그가 있다고 말하면,'emp' 태그 안에있는't' 태그에 대해 위의 구조를 살펴보십시오. 그것이 내가 의미했던 것입니다. XSLT 1.0 또는 2.0을 사용할 수 있습니다.이 스크립트는 Perl 스크립트에서 실행합니다. – user3012857