Pregunta

Estoy tratando de agregar instrucciones de procesamiento a mi archivo XML en la vista fuente del componente XML.Por ejemplo:

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

Después de hacer clic en Guardar, TRIDION CME eliminó automáticamente la instrucción de procesamiento.¿Hay alguna manera de cambiar este comportamiento?

(quiero agregar la instrucción de procesamiento para que pueda abrir el archivo XML con XMLSPY en la vista Auténtica usando WebDAV)

¿Fue útil?

Solución

He investigado un poco, y no estoy convencido de que esto se pueda hacer desde dentro del CMS.Sin embargo, probablemente puede lograrlo creando un httpmodule o proxy o algún formulario que transforma las solicitudes y respuestas realizadas en el directorio / WebDAV de la CME.

Conceptualmente Cuando se realiza una solicitud por XMLSPY, el nuevo módulo se pondrá previa a la instrucción deseada al XML en función del elemento que es un componente y el esquema en el que se basa.Luego, cuando guarda (publica) los datos, deberían quitarlo nuevamente.Esto dejaría la estructura XML en el formato que requiere la tridion SDL.

espero que ayude

chris

Otros consejos

Estoy publicando esto como una idea, aunque no puedo conseguirlo, hacer lo que quiere.He escrito un evento para manipular el XML recibido por XMLSPY (y todos los clientes, incluido el CME en este 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;
            }
        }


    }
}

Intenté manipular la salida (al reemplazar una cadena), y aparece en XMLSPY a través de WebDAV.El problema que tengo es que agregar la instrucción de procesamiento cae fuera del doctorelement, así que nunca lo convierte en el nuevo XML.

Entonces sé que esto no resuelve su desafío, pero quizás alguien más sepa de un evento que le permita agregar la instrucción cuando el XML se carga a través del cartucho WebDAV de manera similar.

Espero que alguien más pueda ayudarlo a cerrar esto, cavaré un poco más si tengo tiempo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top