- 修改後的問題 -如何按內容對元素進行分組(XSLT 2.0)?
感謝所有提供潛在解決方案的人,但這些都與我已經嘗試的一致,所以我認爲我應該更清楚。我稍微擴展了XML以使問題更加透明。
XML實際上是包含翻譯內容的各種文件的彙編,其目的是獲得僅包含唯一英文字符串的統一文檔,並且(在人工審閱和清理後)爲每個字符串翻譯一個,所以它可以用於翻譯記憶。這就是爲什麼它現在是一個大量的冗餘信息文件。
每個para行包含英文master(可在文件中重複數十次)和翻譯變體。在某些情況下,由於所有翻譯版本都是平等的,所以我最終只用一行代碼,但在其他情況下可能會更復雜。
因此,假設我今天有一個包含相同的英文內容10條線(#1),2度不同的德國人的變化,3種不同的法國變化,以及語言環境剩下的只有一個變化,我需要得到:
1個帕拉有:1 EN/2 DE(v1和v2)/ 3 FR(V1,V2和V3)/ ...
而這種重複每個分組唯一英語值在我的名單
的修改XML:
<Books>
<!--First English String (#1) with number of potential translations -->
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<FR>French Trans of #1 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v2</DE>
<FR>French Trans of #1 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<FR>French Trans of #1 v2</FR>
<!-- More locales here -->
</Para>
<!--Second English String (#2) with number of potential translations -->
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v1</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v3</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #2 v1</FR>
<!-- More locales here -->
</Para>
<!--Loads of additional English Strings (#3 ~ #n) with number of potential translations -->
目前的解決方案提供給我下面的輸出
<Books>
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<DE>German Trans of #1 v2</DE>
<DE>German Trans of #2 v1</DE>
<DE>German Trans of #2 v3</DE>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v2</FR>
<FR>French Trans of #2 v1</FR>
</Para>
</Books>
所以,只取第一個EN標記,然後把所有的人,不相干的英語主路線之間的差異。而我的目標就是要練好以下幾點:
<Books>
<!-- First Grouped EN string and linked grouped translations -->
<Para>
<EN>English Content #1</EN>
<DE>German Trans of #1 v1</DE>
<DE>German Trans of #1 v2</DE>
<FR>French Trans of #1 v1</FR>
<FR>French Trans of #1 v2</FR>
</Para>
<!-- Second Grouped EN string and linked grouped translations -->
<Para>
<EN>English Content #2</EN>
<DE>German Trans of #2 v1</DE>
<DE>German Trans of #2 v3</DE>
<DE>German Trans of #2 v2</DE>
<FR>French Trans of #2 v1</FR>
</Para>
<!-- 3d to n Grouped EN string and linked grouped translations -->
</Books>
你舉的例子是混亂的,特別是由於重複' '值。你是否也可以在XSLT上展示自己的第一步,展示你的現有邏輯? –
對於按內容對元素進行分組的好問題+1。 –
好問題,+1。請參閱我的答案,以獲得即使對於具有完全相同翻譯的緊密語言也能正常工作的解決方案:) –