2016-02-11 14 views
9

Vâng, tôi đã biết rằng có một tài liệu về vấn đề này, trong đó nêu:Docx hoặc XPS (hoặc OOXML nói chung) Mối quan hệ chuyển đổi ví dụ

12.2.4.26 Relationships Transform Algorithm 
13 The relationships transform takes the XML document from the Relationships part and converts it to another 
14 XML document. 
15 The package implementer might create relationships XML that contains content from several namespaces, along 
16 with versioning instructions as defined in Part 5: “Markup Compatibility and Extensibility”. [O6.11] 
17 The relationships transform algorithm is as follows: 
18 Step 1: Process versioning instructions 
19 1. The package implementer shall process the versioning instructions, considering that the only known 
20 namespace is the Relationships namespace. 
21 2. The package implementer shall remove all ignorable content, ignoring preservation attributes. 
22 3. The package implementer shall remove all versioning instructions. 
23 Step 2: Sort and filter relationships 
24 1. The package implementer shall remove all namespace declarations except the Relationships namespace 
25 declaration. 
26 2. The package implementer shall remove the Relationships namespace prefix, if it is present. 
27 3. The package implementer shall sort relationship elements by Id value in lexicographical order, 
28 considering Id values as case-sensitive Unicode strings. 
29 4. The package implementer shall remove all Relationship elements that do not have eitheran Id value 
30 that matches any SourceId valueor a Type value that matches any SourceType value, among the 
31 SourceId and SourceType values specified in the transform definition. Producers and consumers shall 
32 compare values as case-sensitive Unicode strings. [M6.27] The resulting XML document holds all 
33 Relationship elements that either have an Id value that matches a SourceId value or a Type value that 
34 matches a SourceType value specified in the transform definition. 
35 Step 3: Prepare for canonicalization 
Digital Signatures 
58 
1. The package implementer shall remove all characters between the 1 Relationships start tag and the first 
2 Relationship start tag. 
3 2. The package implementer shall remove any contents of the Relationship element. 
4 3. The package implementer shall remove all characters between the last Relationship end tag and the 
5 Relationships end tag. 
6 4. If there are no Relationship elements, the package implementer shall remove all characters between 
7 the Relationships start tag and the Relationships end tag. 

Nhưng tôi là một chút nhầm lẫn trong quá trình này bởi vì trong mỗi thử tôi tái tạo sự biến đổi không chính xác mặc dù được cho là tôi đã tuân thủ tất cả các thông số trong tài liệu,

có thể nếu chỉ có MỘT ví dụ về việc chuyển đổi đó (chỉ đầu vào => đầu ra). Vì vậy, điều duy nhất được yêu cầu ở đây là ví dụ về chức năng xml cụ thể pacakage (hoặc tùy chọn, với câu trả lời và mã mặc dù không bắt buộc vì tôi đã phát triển hầu hết nó.)

Vì vậy, đây là thẻ đang cố gắng tạo kết quả:

<Reference URI="/Documents/1/Pages/_rels/1.fpage.rels?ContentType=application/vnd.openxmlformats-package.relationships+xml"><Transforms><Transform Algorithm="http://schemas.openxmlformats.org/package/2006/RelationshipTransform"><opc:RelationshipReference SourceId="rId1" /></Transform><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms></Reference> 

và đây là những mối quan hệ ban đầu file:

<?xml version="1.0" encoding="utf-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="/Documents/1/Pages/3.xml" Id="rId3" /><Relationship Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="/Documents/1/Pages/2.xml" Id="rId2" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/Documents/1/Pages/1.xml" Id="rId1"/></Relationships> 

và đây là (không chính xác) chuyển một:

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Target="/Documents/1/Pages/1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"></Relationship></Relationships> 
+0

Đó là một cảnh quay dài nhưng bạn đã hỏi trong diễn đàn "mở thông số kỹ thuật" trên MSDN: https://social.msdn.microsoft.com/Forums/en-US/home?forum=os_binaryfile? Họ có xu hướng tập trung nhiều hơn vào "mô hình đối tượng" nhưng ai đó có thể có một số thông tin chi tiết. Tôi muốn đề cập đến nguồn gốc của "tài liệu" với các thông số kỹ thuật, cũng như phần mềm với các mối quan hệ mà bạn đang cố gắng biến đổi. Tôi không nhận ra đường dẫn "Mục tiêu" ... –

+0

Câu hỏi này đã được hỏi: https://social.msdn.microsoft.com/Forums/en-US/4b0364fe-2250-48b4-a6a1-6fe098f8d247/xades- Nhưng câu trả lời được cung cấp là mơ hồ và không phải là rất hữu ích không may (OP đề cập đến XAdes nhưng thành thật không XAdes cụ thể của nó). – lkn2993

Trả lời

0

Tôi đã trả lời câu hỏi này ở đây: XML Relationship Transform Algorithm

TL; DR Bạn quên "Chuẩn bị để trình chuẩn hóa" bước trong mối quan hệ chuyển đổi và không thêm "TargetMode" thuộc tính đến "Mối quan hệ "phần tử.

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