SDL TridionでXMLファイルの処理命令を保存する方法
-
12-12-2019 - |
質問
コンポーネント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を使用したAuthentic ViewでXMLSpyでXMLファイルを開くことができるように処理命令を追加したい)
解決
私はこれを少し研究しました、そして私はCMS内からこれを確信していません。ただし、CMEの/ webdavディレクトリの/ webdavディレクトリに行われた要求と応答を変換するHTTPModuleまたはプロキシまたはその形式を作成することで、おそらくこれを実現できます。
概念的にXMLSPYによって要求が行われた場合、新しいモジュールは、コンポーネントである項目とそれが基づくスキーマに基づいて、XMLに目的の命令を事前に修了します。その後、データを保存(投稿)したとき、それは再び取り除きます。これにより、SDL Tridionが必要な形式でXML構造を残します。
を助けたい
クリス
他のヒント
私はこれをアイデアとして投稿しています - 私はそれを得ることができませんがあなたが欲しいものをやることができますが。XMLSpyによって受信されたXMLを操作するためのイベントハンドラを書いています(そしてこの時点で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;
}
}
}
}
.
私は(文字列を置き換えることによって)出力を操作しようとしました、そしてそれはWebDAVを介してXMLSpyに表示されます。私が持っている問題は、処理命令をDocumentElementの外側に追加されるので、それを新しいXMLにしないでください。
だから私はこれがあなたの挑戦を解決しないことを知っています - しかし、他の誰かが同様の方法でXMLがWebDAVカートリッジを介してロードされたときに命令を追加することを可能にするイベントを知っているイベントを知っています。
他の誰かがあなたがこれを閉じるのを助けることができることを願っています - 私が時間がある場合はもう少し掘り下げるでしょう