2012-10-01 10 views
7

コンポーネントxmlのソースビューでxmlファイルに処理命令を追加しようとしています。例:SDL Tridionで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のXMLファイルを開くことができるように処理命令を追加したい)

答えて

3

を持っている場合、私はもう少しを掘るだろう、と私は、これはCMS内から行うことができます確信していないです - 他

ホープ誰かがあなたがこれを閉じることができます。ただし、HTTPModuleまたはProxy、またはCMEの/ webdavディレクトリに作成された要求と応答を変換するフォームを作成することで、これを達成できます。

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

すべての研究と答えを

クリス

+0

おかげでクリスがお役に立てば幸いです。私も同様の課題を理解しています。私はTridion CMEがソースビューでそれを追加した後に処理命令を保持できるかどうか疑問に思っています。それはすべての問題を救うでしょう。 Tridionに機能要求を提出する方法はありますか? – charles

+0

http://ideas.sdltridion.com/でアイデアを提出できます。また、SDL Tridionカスタマーサポートで強化リクエストを送信することもできます。@Nunoの記述どおり、表示されているXMLはコンテンツノードであり、完全なXMLではありません処理命令をそこに保存することは常に無効になるので、実装する可能性は低いと思います。しかし、それは試してみる価値があります。がんばろう。 –

2

私はアイデアとしてこれを掲示しています - 私はそれが非常に行うのですか取得することはできませんが、あなたが欲しいもの。私は(文字列を置き換えることで)出力を操作してみました(この時点ではとCMEを含むすべてのクライアント)のXMLSpyで受け取ったXML

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


    } 
} 

を操作するためのEventHandlerを書かれている、それは経由のXMLSpyに表示されませんWebDAV。私が持っている問題は、処理命令を追加することはDocumentElementの外にあるので、新しいXMLには入れないことです。

これはあなたの挑戦を解決するものではないことを知っていますが、XMLがWebDAVカートリッジを介して同様の方法でロードされたときに、私はこのビットを研究している時間

関連する問題