Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在转换为多个xml后拆分输入xml';s使用一个xslt在tridion中实现组件链接_Xslt_Tridion - Fatal编程技术网

如何在转换为多个xml后拆分输入xml';s使用一个xslt在tridion中实现组件链接

如何在转换为多个xml后拆分输入xml';s使用一个xslt在tridion中实现组件链接,xslt,tridion,Xslt,Tridion,假设输入xml如图所示 <Content> <ab>xxxx</ab> <bc>yyyyyy</bc> <ca>uuuuuuu</ca> </Content> 其中A、B、C是已从文件创建的独立组件,这些文件是通过将转换后的输入xml文件拆分为多个xml文件而形成的 组件A的源:文件名

假设输入xml如图所示

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

其中A、B、C是已从文件创建的独立组件,这些文件是通过将转换后的输入xml文件拆分为多个xml文件而形成的

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

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

xxxx
此处“aaa”是从输入xml转换而来的相应“ab”标记名的标记名

组件B的源:文件名应该是经过转换的标记名,如bbb.xml

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

yyyyyy
此处“bbb”是从输入xml转换而来的相应“bc”标记名的标记名

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

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

乌乌
此处“ccc”是从输入xml转换而来的相应“ca”标记名的标记名


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

您的实现似乎正在彻底改造轮子-您有什么理由不能使用SDL Tridion提供的标准组件链接功能?假设您有3个具有以下URI的目标组件:

  • 目标A(变速器控制模块:1-1)
  • 目标B(tcm:1-2)
  • 目标C(tcm:1-3)
  • 您有一些源组件XML,在一个RTF字段中有指向3个项目的链接,或者在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>
    
    
    
    然后应用默认TBB将这些链接转换为动态链接引用,当页面加载时,链接将解析为所需的路径


    如果没有帮助,请考虑重新编写你的问题,这样我们就可以理解你实际上想要达到的目标。

    我不知道怎么可能有一个单独的XSLT,它也将单独地保存所有的组件。你需要一些胶水把它粘在一起。我也不理解要求它应该是单个XSLT背后的原因……好吧。我们可以使用单个xslt将输入xml转换为组件链接源格式,并将转换为单独文件的标记拆分。我不需要为拆分的文件创建组件,我只需要根据组件如何驻留在tridion中的源格式转换拆分为文件的标记,并使用Webdav加载它。我认为这将解决我们的问题。您似乎已经做出了无法实现的设计。也许根据你试图解决的问题来写你的问题会更好。这样-答案可能对你和其他人都有帮助。请你解释一下你的用例,说明你想要实现什么。与您目前采用的方法相比,可能有简单的解决方案/方法。您是否试图通过复制和粘贴xml文件使用webdav导入内容?从其他人的评论中可以看出,您可能使设计复杂化了。使用XSLT 2.0或XSLT 1.0可以很容易地做到这一点,您可以使用执行
    的EXSLT实现。你对这些解决方案感兴趣吗?
            <Content>
           <ccc>uuuuuuu</ccc>
            </Content>
    
    <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>
    
    <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>