Как поддерживать обработку инструкций XML-файла в Tridion SDL?

StackOverflow https://stackoverflow.com//questions/12677032

Вопрос

Я пытаюсь добавить инструкции по обработке в мой файл XML в представлении источника компонента XML.Например:

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

После нажима на сохранение, тридион CME автоматически удаляет инструкцию обработки.Есть ли способ изменить это поведение?

(я хочу добавить инструкцию обработки, чтобы я мог открыть файл XML с XMLSPY в аутентичным представлении, используя WebDAV)

Это было полезно?

Решение

Я немного исследовал это, и я не уверен, что это можно сделать из-за CMS.Однако вы, вероятно, можете достичь этого, создав HTPModule или Proxy или некоторую форму, которая преобразует запросы и ответы, сделанные в каталоге / WebDAV CME.

Концептуально, когда запрос сделан XMLSPY, новый модуль будет предварительно подать желаемую инструкцию к XML на основе элемента, являющегося компонентами, и схемы, на которой она основана.Затем, когда вы сохраняете (пост) данные обратно ему нужно снова отбросить его.Это оставило бы структуру XML в формате, которое требует тридиона SDL.

Надеюсь, что помогает

Крис

Другие советы

Я размещаю это как идею - хотя я не могу получить, делай, что вы хотите.Я написал EventHandler для манипулирования XML, полученным через XMLSPY (и все клиенты, включая CME в этой точке)

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


    }
}
.

Я пытался управлять выходом (заменив строку), и она отображается в XMLSPY через WebDAV.Проблема у меня есть, это то, что добавление инструкции обработки падает за пределами документации, поэтому никогда не входит в новый XML.

Так что я знаю, что это не решает вашу задачу - но, возможно, кто-то еще знает о событии, который позволит вам добавить инструкцию, когда XML загружен через картридж WebDav аналогичным образом.

Надеюсь, кто-то еще может помочь вам закрыть это - я буду немного больше, если у меня будет время

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top