2012-10-01 36 views
7

Tôi đang cố thêm hướng dẫn xử lý vào tệp xml của tôi trong chế độ xem nguồn của thành phần xml. Ví dụ:Làm thế nào để tiếp tục hướng dẫn xử lý tệp xml trong SDL Tridion?

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

Sau khi tôi nhấp vào Lưu, TrIDion CME sẽ tự động xóa hướng dẫn xử lý. Có cách nào để thay đổi hành vi này không?

(Tôi muốn thêm các hướng dẫn xử lý để tôi có thể mở file xml với XMLSpy trong Authentic Xem sử dụng WebDAV)

Trả lời

3

Tôi đã nghiên cứu này một chút, và tôi không thuyết phục này có thể được thực hiện từ bên trong CMS. Tuy nhiên bạn có thể có thể đạt được điều này bằng cách tạo một HTTPModule hoặc Proxy hoặc một số biểu mẫu biến đổi các yêu cầu và phản hồi được thực hiện cho thư mục/webdav của CME.

Về mặt khái niệm khi một yêu cầu được tạo bởi XMLSpy, mô-đun mới sẽ chuyển đổi trước hướng dẫn mong muốn sang XML dựa trên mục là Thành phần và Lược đồ dựa trên đó. Sau đó, khi bạn lưu (POST) dữ liệu trở lại nó sẽ cần phải loại bỏ nó ra một lần nữa. Điều này sẽ rời khỏi cấu trúc XML theo định dạng mà SDL Tridion yêu cầu.

Hy vọng rằng sẽ giúp

Chris

+0

Cảm ơn Chris cho tất cả các nghiên cứu và trả lời. Tôi hiểu những thách thức là tốt. Tôi chỉ tự hỏi liệu Tridion CME có thể giữ các chỉ dẫn xử lý của tôi sau khi tôi thêm nó vào trong chế độ xem nguồn hay không. Điều đó sẽ cứu mọi rắc rối. Có cách nào để gửi yêu cầu tính năng tới Tridion không? – charles

+0

Bạn có thể gửi ý tưởng qua http://ideas.sdltridion.com/ hoặc yêu cầu nâng cao với Hỗ trợ khách hàng của SDL Tridion - Nhưng như được nêu trong @Nuno, XML bạn đang xem chỉ là nút nội dung chứ không phải XML hoàn chỉnh , do đó, nó sẽ luôn luôn là không hợp lệ để lưu các hướng dẫn xử lý ở đó, vì vậy tôi không nghĩ rằng nó có khả năng là họ sẽ thực hiện nó. Nhưng nó là giá trị cố gắng. Chúc may mắn. –

2

Tôi gửi bài này như một ý tưởng - mặc dù tôi không thể lấy nó làm làm khá bạn muốn gì. Tôi đã viết một EventHandler để thao tác XML nhận được bởi XMLSpy (và tất cả các khách hàng bao gồm CME vào thời điểm này)

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


    } 
} 

tôi đã cố gắng thao tác đầu ra (bằng cách thay thế một chuỗi), và nó không hiển thị trong XMLSpy qua WebDAV. Vấn đề tôi có là việc thêm lệnh xử lý nằm ngoài DocumentElement, vì vậy không bao giờ làm cho nó thành XML mới. Vì vậy, tôi biết điều này không giải quyết được thách thức của bạn - nhưng có lẽ ai đó biết về một sự kiện cho phép bạn nối thêm hướng dẫn khi XML được tải thông qua hộp mực WebDAV theo cách tương tự.

Hope ai đó có thể giúp bạn đóng này - Tôi sẽ đào hơn một chút nếu tôi có thời gian

Các vấn đề liên quan