2016-02-11 10 views
9

Beh so già che non v'è un documento su questo, in cui si afferma:Docx o XPS (o OOXML in generale) Relazione trasformano esempio

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. 

Ma io sono un po 'confuso nel processo perché in ogni prova a riprodurre la trasformazione errata anche se presumibilmente ho rispettato tutte le specifiche nel documento,

forse se ci fosse solo un esempio di tale trasformazione (solo input => output) sarei molto meno confuso. Quindi l'unica cosa richiesta qui è l'esempio di tale funzione xml di pacakage specifico (o facoltativamente, con una risposta e codici sebbene non necessari perché ne ho sviluppato la maggior parte.)

Quindi ecco il tag che prova a produrre l'output:

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

ed ecco il file originale relazioni:

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

ed ecco la (erroneamente) trasformato uno:

<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

È una soluzione lunga, ma hai già chiesto nel forum "specifiche aperte" su MSDN: https://social.msdn.microsoft.com/Forums/en-US/home?forum=os_binaryfile? Tendono a concentrarsi maggiormente sui "modelli oggetto" ma qualcuno potrebbe avere qualche intuizione. Vorrei menzionare la fonte del "documento" con le specifiche, così come il software con le relazioni che stai cercando di trasformare. Non sto riconoscendo i percorsi "Target" ... –

+0

Questa domanda è già stata posta: https://social.msdn.microsoft.com/Forums/en-US/4b0364fe-2250-48b4-a6a1-6fe098f8d247/xades- firma-in-office-documenti? forum = os_binaryfile Ma la risposta fornita era ambigua e non molto utile purtroppo (OP ha menzionato XAdes ma onestamente non è specifico per XAdes). – lkn2993

risposta

0

Ho risposto a questa domanda qui: XML Relationship Transform Algorithm

TL; DR Hai dimenticato il "Preparazione alla canonica" passo nella trasformazione di relazione e non aggiungendo il "TargetMode" attributo alla "Relazione "elemento.

Problemi correlati