2012-10-01 10 views
7

Sto cercando di aggiungere istruzioni di elaborazione al mio file xml nella vista sorgente del componente xml. Ad esempio:Come mantenere le istruzioni di elaborazione del file xml in SDL Tridion?

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

Dopo aver fatto clic su Salva, Tridion CME ha rimosso automaticamente le istruzioni di elaborazione. C'è un modo per cambiare questo comportamento?

(voglio aggiungere l'istruzione di elaborazione in modo che possa aprire il file xml con XMLSpy in autentico View utilizzando WebDAV)

risposta

3

Ho ricercato questo un po', e non mi convince questo può essere fatto all'interno del CMS. Tuttavia, probabilmente è possibile ottenere ciò creando un HTTPModule o Proxy o qualche modulo che trasforma le richieste e le risposte apportate alla directory/webdav della CME.

Concettualmente, quando una richiesta viene eseguita da XMLSpy, il nuovo modulo precaricherà l'istruzione desiderata all'XML in base all'elemento che costituisce un Componente e allo Schema su cui si basa. Quindi, quando si salva (POST) i dati indietro, è necessario rimuoverli di nuovo. Ciò lascerebbe la struttura XML nel formato richiesto da SDL Tridion.

Speranza che aiuta

Chris

+0

Grazie Chris per tutte le ricerche e le risposte. Capisco anche le sfide. Mi sto solo chiedendo se Tridion CME possa mantenere le mie istruzioni di elaborazione dopo averlo aggiunto nella vista sorgente. Ciò salverebbe tutto il problema. C'è un modo per inviare una richiesta di funzionalità a Tridion? – charles

+0

Puoi inviare l'idea tramite http://ideas.sdltridion.com/ o una richiesta di miglioramento con SDL Tridion Customer Support - Ma come dichiarato da @Nuno, l'XML che stai vedendo è solo il nodo del contenuto, e non l'XML completo , quindi sarà sempre invalido salvare le istruzioni di elaborazione lì, quindi non penso sia probabile che lo implementeranno. Ma vale la pena provare. In bocca al lupo. –

2

sto postando questo come idea - anche se non posso farlo non fare abbastanza ciò che vuoi. Ho scritto un EventHandler di manipolare l'XML ricevuto da XMLSpy (e tutti i clienti tra cui il CME, a questo punto)

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


    } 
} 

ho provato manipolare l'uscita (sostituendo una stringa), e lo fa apparire in XMLSpy via WebDAV. Il problema che ho è che aggiungere le istruzioni di elaborazione non rientra in DocumentElement, quindi non inserire mai il nuovo XML.

Quindi so che questo non risolve la tua sfida - ma forse qualcun altro sa di un evento che ti permetterebbe di aggiungere le istruzioni quando l'XML viene caricato tramite la cartuccia WebDAV in un modo simile.

speranza che qualcun altro può aiutare a chiudere questo - voglio scavare un po 'di più se ho tempo

Problemi correlati