2016-02-11 40 views
9

嗯,我已经知道,有一个关于这个文件,其中规定:DOCX或XPS(或一般OOXML)的关系变换例如

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. 

但我在这个过程有点困惑,因为在每一个尝试我重现不正确的转换,即使据说我遵守了文档中的所有规格,如果只有一个这样的转换的例子(只有输入=>输出),我可能会更少混淆。所以这里唯一需要的是这样的特定xml函数的示例(或者可选地,具有答案和代码,虽然不是必需的,因为我已经开发了大部分)。

因此,这里是标签试图产生输出:

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

而这里的原始关系的文件:

<?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> 

和这里的(错误地)转变之一:

<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

这是一个漫长的过程,但是您是否已经在MSDN上的“打开规范”论坛中提问:https://social.msdn.microsoft.com/Forums/en-US/home?forum = os_binaryfile?他们倾向于更多地关注“对象模型”,但有人可能会有一些洞察力。我会提到规范的“文档”的来源,以及具有您试图改变的关系的软件。我不认识到“目标”路径... –

+0

此问题已被询问:https://social.msdn.microsoft.com/Forums/en-US/4b0364fe-2250-48b4-a6a1-6fe098f8d247/xades-签名在办公室文件?论坛= os_binaryfile但提供的答案是模棱两可的,并不是非常有用的不幸(OP提到XAdes,但老实说,它不是特定于XAdes)。 – lkn2993

回答