Question

J'essaie d'ajouter une instruction de traitement à mon fichier XML dans la vue source du composant XML.Par exemple:

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

Après que je clique sur Enregistrer, Tridion CME a automatiquement supprimé l'instruction de traitement.Y a-t-il un moyen de changer ce comportement?

(Je veux ajouter les instructions de traitement afin que je puisse ouvrir le fichier XML avec XMLSPY en mode authentique à l'aide de WebDav)

Était-ce utile?

La solution

J'ai un peu recherché cela, et je ne suis pas convaincu que cela peut être fait à partir de la CMS.Cependant, vous pouvez probablement y parvenir en créant un fichier httpmodule ou un proxy ou une forme supplémentaire qui transforme les demandes et les réponses apportées au répertoire / WebDAV du CME.

Conceptuellement Lorsqu'une demande est faite par XMLSPY, le nouveau module pré-attendre l'instruction souhaitée au XML en fonction de l'élément étant un composant et le schéma qu'il est basé sur.Ensuite, lorsque vous enregistrez (post) les données, il aurait besoin de l'éloigner à nouveau.Cela laisserait la structure XML dans le format que le tridion SDL nécessite.

espoir que cela aide

chris

Autres conseils

Je pose cela comme une idée - bien que je ne puisse pas l'obtenir faire tout ce que vous voulez.J'ai écrit un événement EventHandler pour manipuler le XML reçu par XMLSPY (et tous les clients, y compris le CME à ce stade)

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


    }
}

J'ai essayé de manipuler la sortie (en remplaçant une chaîne), et il apparaît dans XMLSPY via WebDAV.Le problème que j'ai est que l'ajout de l'instruction de traitement tombe en dehors de la documentation, donc ne le fait jamais dans le nouveau XML.

Je sais donc que cela ne résout pas votre défi - mais peut-être que quelqu'un d'autre sait d'un événement qui vous permettrait d'ajouter l'instruction lorsque le XML est chargé via la cartouche WebDAV de manière similaire.

J'espère que quelqu'un d'autre peut vous aider à fermer ceci - je vais creuser un peu plus si j'ai le temps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top