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 文件而形成的文件创建的单独组件。

组件 A 的来源:文件名应该是转换后的标签名称,如 aaa.xml

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

这里的“aaa”是从输入 xml 转换的相应“ab”标签的标签名。

组件 B 的源:文件名应该是转换后的标签名称,如 bbb.xml

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

这里的“bbb”是从输入 xml 转换的相应“bc”标签的标签名。

组件 C 的源:文件名应该是转换后的标签名,如 ccc.xml

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

这里的“ccc”是从输入 xml 转换的相应“ca”标签的标签名。

所以我只需要一个 XSLT,它将输入 xml 转换为 tridion 组件链接格式,并将输入 xml 中的每个标签转换为它并将其存储在相应的文件下,文件名作为转换后的标签名。有人可以帮帮我。

4

1 回答 1

1

您的实施似乎完全是在重新发明轮子 - 您是否有理由不能使用 SDL Tridion 提供的标准组件链接功能?假设您有 3 个具有以下 URI 的目标组件:

  1. 目标 A (tcm:1-1)
  2. 目标 B (tcm:1-2)
  3. 目标 C (tcm:1-3)

并且您有一些源组件 XML,在带有指向 3 个项目的链接的 RTF 字段或 3 个单独的组件链接字段中,您将拥有类似于此的 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 中介器将 Source 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 回答