SDL TRIDION에서 XML 파일의 지침을 처리하는 방법은 무엇입니까?
-
12-12-2019 - |
문제
컴포넌트 XML의 원본보기에서 내 XML 파일에 처리 지침을 추가하려고합니다.예 :
<?altova_sps C:\Users\src\sps\2012\spsfile.sps?>
<my_element xmlns="uuid:8d903098-e607-4d96-90a7-14d2d188dab7">
...
</my_element>
.
저장을 클릭하면 TRIDION CME가 처리 명령을 자동으로 제거합니다.이 행동을 바꿀 수있는 방법이 있습니까?
(WebDAV를 사용하여 진정한 뷰에서 XML 파일을 XML 파일을 열 수 있도록 처리 명령을 추가하고 싶습니다)
해결책
나는 이것을 조금 연구하고, 나는 이것이 CMS 내에서 이루어질 수 있다고 확신하지 못한다.그러나 CME의 / webdav 디렉토리에 대한 요청 및 응답을 변환하는 HTTPModule 또는 프록시 또는 일부 양식을 작성하여이를 수행 할 수 있습니다.
개념적으로 XMLSPY가 요청할 때 새 모듈은 구성 요소가되는 항목과 스키마가 기반으로하는 항목을 기반으로 원하는 명령을 XML에 미리 보냅니다.그런 다음 데이터를 다시 저장할 때 다시 스트립해야합니다.이것은 SDL TRIDION이 요구하는 형식으로 XML 구조를 남겨 둡니다.
에 도움이되기를 바랍니다.
크리스
다른 팁
나는 이것을 아이디어로 게시하지만, 나는 그것을 얻을 수는 없지만 당신이 원하는 것을 꽤 할 수 없습니다.XMLSPY (및이 시점에서 CME를 포함한 모든 클라이언트를 포함한 모든 클라이언트)가 XML을 조작하기 위해 EventHandler를 작성했습니다.
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;
}
}
}
}
.
문자열을 교체하여 출력을 조작하려고 시도했으며 WebDAV를 통해 XMLSPY에 표시됩니다.내가 가진 문제는 처리 명령을 추가하는 것이 문서 밖에 없으므로 결코 새로운 XML로 만들지 않습니다.
이 문제가 해결되지 않지만 XML이 비슷한 방식으로 XML을 WebDAV 카트리지를 통해로드 할 때 명령을 추가 할 수있는 이벤트를 알고 있습니다.
다른 누군가가 당신을 닫을 수 있기를 바랍니다. 시간이 있다면 조금 더 파고