7

コンポーネント xml のソース ビューで、xml ファイルに処理命令を追加しようとしています。例えば:

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

[保存] をクリックすると、Tridion CME によって処理命令が自動的に削除されました。この動作を変更する方法はありますか?

(WebDAV を使って XMLSpy で Authentic View で xml ファイルを開くことができるように処理命令を追加したい)

4

2 に答える 2

3

私はこれについて少し調べましたが、これが CMS 内から実行できるとは確信していません。ただし、CME の /webdav ディレクトリに対して行われた要求と応答を変換する HTTPModule または Proxy、または何らかのフォームを作成することで、おそらくこれを実現できます。

概念的には、XMLSpy によってリクエストが行われると、新しいモジュールはコンポーネントであるアイテムとそれが基づいているスキーマに基づいて、必要な命令を XML に追加します。次に、データを保存 (POST) すると、データを再度削除する必要があります。これにより、XML 構造は SDL Tridion が必要とする形式のままになります。

それが役立つことを願っています

クリス

于 2012-10-03T00:55:31.960 に答える
2

私はこれをアイデアとして投稿していますが、あなたが望むことを完全に行うことはできません. XMLSpy (およびこの時点で CME を含むすべてのクライアント) によって受信された XML を操作する EventHandler を作成しました。

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


    }
}

出力を (文字列を置換して) 操作してみましたが、WebDAV 経由で XMLSpy に表示されます。私が抱えている問題は、処理命令の追加が DocumentElement の範囲外になるため、新しい XML に組み込まれないことです。

だから私はこれがあなたの課題を解決しないことを知っています - しかし、おそらく他の誰かが、XMLがWebDAVカートリッジを介して同様の方法でロードされたときに命令を追加できるイベントを知っています.

他の誰かがこれを閉じるのを手伝ってくれることを願っています - 時間があればもう少し掘り下げます

于 2012-10-01T23:47:04.513 に答える