2012-10-01 2 views
7

Ich versuche, eine Verarbeitungshinweise zu meiner XML-Datei in der Quellansicht der Komponente XML hinzuzufügen. Zum Beispiel:Wie Sie die Verarbeitungsanweisungen der XML-Datei in SDL Tridion weiterverwenden?

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

Nachdem ich auf Speichern geklickt habe, entfernt Tridion CME automatisch die Verarbeitungsanweisung. Gibt es eine Möglichkeit, dieses Verhalten zu ändern?

(Ich möchte die Verarbeitungsanweisung hinzufügen, so dass ich die XML-Datei mit XMLSpy in der Authentic-Ansicht über WebDAV öffnen kann)

Antwort

3

ich dieses ein bisschen recherchiert, und ich bin nicht überzeugt, dass dies innerhalb des CMS durchgeführt werden kann. Sie können dies jedoch wahrscheinlich erreichen, indem Sie ein HTTP-Modul oder einen Proxy oder ein Formular erstellen, das die Anforderungen und Antworten in das Verzeichnis/webdav des CME transformiert.

Konzeptionell, wenn eine Anfrage von XMLSpy gestellt wird, würde das neue Modul die gewünschte Anweisung an die XML-Datei anhängen, basierend auf dem Element, das eine Komponente ist, und dem Schema, auf dem es basiert. Wenn Sie dann die Daten speichern (POST), müssen Sie sie wieder entfernen. Dies würde die XML-Struktur in dem von SDL Tridion benötigten Format belassen.

Hoffnung, die

Chris

+0

Dank Chris für die ganze Forschung und Antworten hilft. Ich verstehe die Herausforderungen auch. Ich frage mich nur, ob Tridion CME meine Verarbeitungsanweisungen beibehalten kann, nachdem ich sie in der Quellansicht hinzugefügt habe. Das würde all den Ärger retten. Gibt es eine Möglichkeit, eine Feature-Anfrage an Tridion zu senden? – charles

+0

Sie können die Idee über http://ideas.sdltridion.com/ oder eine Verbesserungsanfrage mit SDL Tridion Customer Support einreichen. Aber wie von @Nuno angegeben, ist die XML, die Sie sehen, nur der Inhaltsknoten und nicht das vollständige XML Daher ist es immer ungültig, die Verarbeitungsanweisung dort zu speichern. Daher glaube ich nicht, dass sie es wahrscheinlich implementieren werden. Aber es ist einen Versuch wert. Viel Glück. –

2

ich dies als eine Idee bin Entsendung - obwohl ich es nicht ganz erhalte tun können was du willst. Ich habe einen Eventhandler geschrieben von XMLSpy die XML empfangen zu manipulieren (und alle Clients einschließlich der CME an dieser Stelle)

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


    } 
} 

ich die Ausgabe versuchte Manipulation (durch einen String ersetzt), und es in XMLSpy nicht zeigen, bis über WebDAV. Das Problem, das ich habe, ist, dass das Hinzufügen der Verarbeitungsanweisung außerhalb des DocumentElement liegt, also nie in das neue XML übergeht.

Also weiß ich, dass dies Ihre Aufgabe nicht löst - aber vielleicht kennt jemand anderes ein Ereignis, mit dem Sie die Anweisung anhängen können, wenn das XML in ähnlicher Weise über die WebDAV-Kassette geladen wird.

Hoffnung jemand anderes können Sie diese schließen helfen - ich werde ein wenig mehr graben, wenn ich Zeit habe

Verwandte Themen