- 修正された質問 -要素をコンテンツ(XSLT 2.0)でグループ化する方法は?
私はすでに解決しようとしているすべての方々に感謝していますが、これはすでに試したことがありますので、もっと明確にすべきだと思います。問題をより透明にするためにXMLを少し拡張しました。
XMLは実際には翻訳されたコンテンツを含むさまざまなファイルのコンパイルであり、ユニークな英語の文字列のみを含む統一されたドキュメントを取得し、各文字列ごとに1つの翻訳されたものを(手作業によるレビューとクリーニング後に)翻訳メモリに使用することができます。だからこそ、冗長な情報を持つ大きなファイルになりました。
各パララインには英語のマスター(ファイル内で数十回繰り返すことができます)と翻訳の変形が含まれています。かなりの場合、すべての翻訳バージョンが同じであるので簡単ですので、1行で終了しますが、それ以外の場合はもっと複雑かもしれません。
だから、今日、私は同じ英語のコンテンツを含む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 -->
の
現在の解決策は、英語のマスター列間の差異の無関係な、最初ENタグを取り、その後、他のすべてをグループ化し、だから、私に次のような出力
<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>
を提供します。私が狙うすると、次を得るためにしている間:
<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。正確に同じ翻訳を持つ近い言語であっても正しく動作するソリューションについては私の答えを見てください:) –