0

入力xmlが次のようになっているとします

        <Content>
             <ab>xxxx</ab>
             <bc>yyyyyy</bc>
             <ca>uuuuuuu</ca>
         </Content>

変換後の出力xmlファイルは

          <Content>
             <aaa>xxxx</aaa>
             <bbb>yyyyyy</bbb>
             <ccc>uuuuuuu</ccc>
           </Content>

しかし、入力xmlファイルをtridionコンポーネントのソースに変換して、結果のファイルが以下の出力xmlのように複数のコンポーネントリンクを持つコンポーネントのように見えるようにしたい:

      <Content>
   <A  xlink:href="/webdavURL/message/aaa.xml" ></A>
   <B xlink:href="/webdavURL/message/bbb.xml" ></B>
   <C  xlink:href="/webdavURL/message/ccc.xml" ></C>
      <Content>

ここで、A、B、C は、変換された入力 xml ファイルを複数の xml ファイルに分割することによって形成されたファイルから既に作成されている個別のコンポーネントです。

componenty A のソース: ファイル名は aaa.xml のような変換されたタグ名にする必要があります

        <Content>
       <aaa>xxxx</aaa>
        </Content>

ここで、「aaa」は、入力 xml から変換されたそれぞれの「ab」タグのタグ名です。

componenty B の source:file 名は bbb.xml のような変換されたタグ名である必要があります

        <Content>
       <bbb>yyyyyy</bbb>
        </Content>

ここで「bbb」は、入力 xml から変換されたそれぞれの「bc」タグのタグ名です。

コンポーネント C の source:file 名は、ccc.xml のような変換されたタグ名にする必要があります。

        <Content>
       <ccc>uuuuuuu</ccc>
        </Content>

ここで「ccc」は、入力 xml から変換されたそれぞれの「ca」タグのタグ名です。

したがって、入力xmlをtridionコンポーネントリンク形式に変換し、入力xmlの各タグを分割して変換し、変換されたタグ名としてファイル名でそれぞれのファイルに保存する単一のXSLTのみが必要です.誰かが私を助けてくれます.

4

1 に答える 1

1

あなたの実装は車輪を完全に再発明しているようです.SDL Tridionが提供する標準のコンポーネントリンク機能を使用できない理由はありますか? 次の URI を持つ 3 つのターゲット コンポーネントがあるとします。

  1. ターゲットA (tcm:1-1)
  2. ターゲットB (tcm:1-2)
  3. ターゲット C (tcm:1-3)

また、3 つの項目へのリンクを含む RTF フィールドまたは 3 つの個別のコンポーネント リンク フィールドのいずれかにソース コンポーネント XML があり、次のような XML ソースがあります。

<Content>
    <aaa xlink:href="tcm:1-1" xlink:title="Target A">Some text</aaa>
    <bbb xlink:href="tcm:1-2" xlink:title="Target B">Some text</bbb>
    <ccc xlink:href="tcm:1-3" xlink:title="Target C">Some text</ccc>
</Content>

次に、XSLT で行う必要があるのは、nXSLT メディエーターを使用してソース XML を次のように変換することだけです。

<body>
    <a tridion:href="tcm:1-1" title="Target A">Some text</a>
    <a tridion:href="tcm:1-2" title="Target B">Some text</a>
    <a tridion:href="tcm:1-3" title="Target C">Some text</a>
</body>

次に、デフォルトの TBB を適用して、これらのリンクをダイナミック リンク参照に変換します。ページが読み込まれると、リンクは必要なパスに解決されます。

それでも問題が解決しない場合は、あなたが実際に達成しようとしていることを理解できるように、質問を書き直すことを検討してください。

于 2012-06-12T11:32:01.893 に答える