2012-10-01 6 views
7

처리 지침을 구성 요소 xml의 소스보기에서 내 xml 파일에 추가하려고합니다. 예 :SDL Tridion에서 XML 파일의 처리 지시를 유지하는 방법은 무엇입니까?

<?altova_sps C:\Users\src\sps\2012\spsfile.sps?> 
<my_element xmlns="uuid:8d903098-e607-4d96-90a7-14d2d188dab7"> 
    ... 
</my_element> 

저장을 클릭하면 Tridion CME가 자동으로 처리 명령을 제거합니다. 이 동작을 변경하는 방법이 있습니까? 나는 그것이 매우합니까 얻을 수 있지만 -

답변

3

이 있다면 내가 조금 더 파고 것입니다, 나는 이것이 CMS 내에서 수행 할 수 있습니다 확신하고 있지 않다 - 다른

희망 누군가가 당신이 종료 할 수 있습니다. 그러나 HTTPModule 또는 Proxy 또는 CME의/webdav 디렉토리에 대한 요청 및 응답을 변환하는 양식을 만들어이 작업을 수행 할 수 있습니다.

개념적으로 요청이 XMLSpy에 의해 만들어지면 새 모듈은 구성 요소 인 항목과이를 기반으로하는 스키마에 따라 원하는 명령을 XML에 미리 보냅니다. 그런 다음 데이터를 다시 저장 (POST)하면 데이터를 다시 스트립해야합니다. 이렇게하면 XML 구조가 SDL Tridion에 필요한 형식으로 남습니다. 모든 연구와 답을

크리스

+0

감사 크리스 도움이

희망. 나는 도전들도 잘 이해하고있다. 소스보기에서 Tridion CME를 추가 한 후에 Tridion CME가 처리 지시를 유지할 수 있는지 궁금합니다. 그것은 모든 문제를 저장합니다. Tridion에 기능 요청을 제출하는 방법이 있습니까? – charles

+0

http://ideas.sdltridion.com/을 통해 아이디어를 제출하거나 SDL Tridion 고객 지원부를 통해 개선 요청을 제출할 수 있습니다. 그러나 @Nuno에 명시된 바와 같이,보고있는 XML은 완전한 XML이 아닌 콘텐츠 노드뿐입니다. , 그래서 거기에 처리 명령을 저장하는 것은 항상 무효가 될 것이므로, 그것을 구현할 가능성은 없다고 생각합니다. 그러나 노력할 가치가 있습니다. 행운을 빕니다. –

2

내가 아이디어로이를 게시하고 (나는 WebDAV를 사용하여 정통보기에 XMLSPY와 XML 파일을 열 수 있도록 처리 명령을 추가 할) 당신이 원하는. 내가 (문자열을 대체하여) 출력을 조작 시도 (이 시점에서와 CME를 포함한 모든 클라이언트) XMLSPY로 받았다은 XML

using System; 
using System.Text; 
using System.Xml; 
using Tridion.ContentManager.Extensibility.Events; 
using Tridion.ContentManager.Extensibility; 
using Tridion.ContentManager.ContentManagement; 
using System.IO; 

namespace UrbanCherry.Net.SDLTridion.EventHandlers 
{ 
    [TcmExtension("AppendAuthenticHeaders")] 
    public class AppendAuthenticHeaders : TcmExtension 
    { 
     public AppendAuthenticHeaders() 
     { 
      Subscribe(); 
     } 

     public void Subscribe() 
     { 
      EventSystem.Subscribe<Component, LoadEventArgs>(AppendAuthenticHeader, EventPhases.Processed); 
     } 

     private void AppendAuthenticHeader(Component source, LoadEventArgs args, EventPhases phase) 
     { 
      if (source.ComponentType != ComponentType.Multimedia) 
      { 
       XmlDocument newXml = new XmlDocument(); 
       newXml.LoadXml("<?altova_sps C:\\Users\\src\\sps\\2012\\spsfile.sps?>" + source.Content.OuterXml); 
       source.Content = newXml.DocumentElement; 
      } 
     } 


    } 
} 

를 조작 할 수있는 이벤트 핸들러를 작성했습니다, 그리고 그것을 통해 XMLSPY에 표시 않는다 WebDAV. 문제는 처리 명령을 추가하는 것이 DocumentElement 외부에있는 것이므로 새로운 XML로 처리하지 말아야한다는 것입니다.

그래서 저는 이것이 당신의 문제를 해결하지 못한다는 것을 알고 있습니다.하지만 비슷한 방식으로 XML이 WebDAV 카트리지를 통해로드 될 때 명령을 추가 할 수있는 이벤트를 누군가는 알고있을 것입니다. 나는이 조금 연구 한 시간

관련 문제