Pergunta

Eu estou tentando adicionar um processamento de instruções para o meu arquivo xml no modo de exibição fonte do componente xml.Por exemplo:

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

Depois que eu clicar em Salvar, Tridion CME automaticamente removido a instrução de processamento.Existe uma maneira de mudar esse comportamento?

(Eu quero adicionar a instrução de processamento para que eu possa abrir o ficheiro xml com o XMLSpy em Autêntico modo de Exibição usando WebDAV)

Foi útil?

Solução

Eu pesquisei um pouco, e eu não estou convencido de que este pode ser feito de dentro do CMS.No entanto, você provavelmente pode conseguir isso através da criação de um HTTPModule ou Proxy ou de alguma forma, que transforma os pedidos e respostas feitas para o /diretório webdav do CME.

Conceitualmente quando uma solicitação é feita por XMLSpy, o novo módulo teria pré-pend a instrução desejada para o XML com base no item sendo um Componente e o Esquema é baseado em.Em seguida, quando você salvar POST () os dados de volta, seria necessário tira-lo de novo.Isso faria com que a estrutura XML no formato que SDL Tridion requer.

Espero que ajude

Chris

Outras dicas

Estou postando isso como uma ideia, apesar de eu não conseguir fazer bem o que você deseja.Eu escrevi um EventHandler para manipular o XML recebido por XMLSpy (e todos os clientes, incluindo o CME neste ponto)

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


    }
}

Eu tentei manipular a saída (por substituir uma seqüência de caracteres), e ela faz show em XMLSpy através do WebDAV.O problema que eu tenho é que adicionando a instrução de processamento cai fora do DocumentElement, por isso, nunca se torna para o novo XML.

Então eu sei que isto não resolver o seu grande desafio, mas, talvez, alguém sabe de um evento que iria permitir que você anexar a instrução quando o XML é carregado através do WebDAV cartucho de maneira semelhante.

Espero que alguém pode ajudar você a fechar este - eu vou cavar um pouco mais, se eu tiver tempo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top