2012-10-01 14 views
7

Próbuję dodać instrukcje przetwarzania do mojego pliku xml w widoku źródłowym komponentu xml. Na przykład:Jak zachować instrukcje przetwarzania pliku xml w SDL Tridion?

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

Po kliknięciu przycisku Zapisz, tridion CME automatycznie usunął instrukcję przetwarzania. Czy istnieje sposób na zmianę tego zachowania?

(chcę dodać instrukcję przetwarzania tak, że mogę otworzyć plik xml z XMLSpy w autentyczny widok WebDAV)

Odpowiedz

3

ja zbadali ten kawałek, a ja nie jestem przekonany, można to zrobić z poziomu CMS. Jednak prawdopodobnie można to osiągnąć, tworząc moduł HTTP lub serwer proxy lub inną formę, która przekształca żądania i odpowiedzi do katalogu/webdav CME.

Koncepcyjnie, gdy żądanie zostanie wykonane przez XMLSpy, nowy moduł będzie wstępnie przygotował pożądaną instrukcję do XML na podstawie elementu będącego komponentem i schematem, na którym oparty jest. Następnie, po zapisaniu (POST) danych z powrotem, trzeba je ponownie usunąć. Pozostawiłoby to strukturę XML w formacie wymaganym przez SDL Tridion.

nadzieję, że pomoże

Chris

+0

Thanks Chris dla wszystkich badań i odpowiedziami. Rozumiem również wyzwania. Zastanawiam się tylko, czy Tridion CME może zachować moje instrukcje przetwarzania po dodaniu go w widoku źródłowym. To zaoszczędziłoby wszystkich kłopotów. Czy istnieje sposób, aby przesłać żądanie funkcji do Tridion? – charles

+0

Możesz przesłać pomysł za pośrednictwem http://ideas.sdltridion.com/ lub prośby o ulepszenie z obsługą klienta SDL Tridion - ale jak stwierdzono przez @Nuno, wyświetlany XML jest tylko węzłem treści, a nie kompletnym XML , więc zawsze będzie nieważne, aby zapisać instrukcję przetwarzania tam, więc nie sądzę, że jest prawdopodobne, że ją wdrożą. Ale warto spróbować. Powodzenia. –

2

jestem delegowania to jako pomysł - choć nie mogę dostać to robią całkiem czego chcesz. Pisałem o eventhandler manipulowania XML otrzymałem przez XMLSpy (i wszystkich klientów, w tym CME w tym momencie)

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; 
      } 
     } 


    } 
} 

próbowałem manipulowania wyjście (zastępując ciąg), a to ma pokazać się w XMLSpy poprzez WebDAV. Problem polega na tym, że dodanie instrukcji przetwarzania wykracza poza DocumentElement, więc nigdy nie przechodzi do nowego XML.

Wiem, że to nie rozwiąże problemu - ale być może ktoś inny wie o zdarzeniu, które pozwoliłoby ci dołączyć instrukcję, gdy XML jest ładowany za pomocą wkładu WebDAV w podobny sposób.

nadzieję, że ktoś inny może pomóc zamknąć to - będę kopać trochę więcej, jeśli mam czas

Powiązane problemy