Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

Archives

[Open XML] Les relations externes ‘pack:’ d’Open Packaging Convention

J’ai récemment apporté quelques ajouts dans OpenXML4J afin de supporter les URI avec le scheme pack:// permettant de référencer des parties internes (ce que l’on faisait déjà en utilisant les URLs relatives). Pour beaucoup, l’utilisation de cette fonctionnalité OPC n’est pas des plus évidentes dans les projets ; au moins, OpenXML4J aura le mérite de les supporter.

Les règles de transformation d’une URI en son équivalent ‘pack’ pour la spécification ECMA 376 (pas celle ratifié par l’ISO) :

1. Remove the fragment identifier from the package URI, if present.

2. Percent-encode all percent signs (%), question marks (?), at signs (@), colons (:) and commas (,) in the package URI.

3. Replace all forward slashes (/) with commas (,) in the resulting string.

4. Append the resulting string to the string “pack://”.

5. Append a forward slash (/) to the resulting string. The constructed string represents a pack URI with a blank path component.

6. Using this constructed string as a base URI and the part name as a relative reference, apply the rules defined in RFC 3986 for resolving relative references against the base URI.

Cette suite d’opération est triviale et quelques lignes de code suffisent à s’en affranchir, mais voilà, si vous testez l’exemple (je souligne, qualifié de non normatif) de la spécification avec une assertion dans un test unitaire : ERREUR ! En effet, voici l’extrait de l’Annexe 2 B3 de la partie 2 ECMA 376 1.0 :

Example B–5. Composing a pack URI

Given the package URI:

http://www.my.com/packages.aspx?my.package

And the part name:

/a/foo.xml

The pack URI is:

pack://http%3c,,www.my.com,packages.aspx%3fmy.package/a/foo.xml

end example]

Le ‘%3c’ semble être le résultat de l’encodage URL du ‘:’, or l’encodage standard du caractère ‘:’ est ‘%3a’. De ce fait l’exemple est invalide. La correction de l’encodage a été apportée à OpenXML4J. Merci les tests unitaires … Une remontée à faire pour corriger cet exemple de la spécification devrait être effectuée prochainement.

Pour l’opération inverse, à savoir la résolution de l’URI d’une ressource et de la partie ciblée, le fait de parser le scheme et le fragment – en 1 - est juste un moyen de demander au développeur de supprimer le ‘pack://’ devant l’URI originale et des fragments à droite de celle-ci :

1. Parse the pack URI into the potential three components: scheme, authority, path, as well as any fragment identifier.

2. In the authority component, replace all commas (,) with forward slashes (/).

3. Un-percent-encode ASCII characters in the resulting authority component.

4. The resultant authority component is the URI for the package as a whole.

5. If the path component is empty, the pack URI resolves to the package as a whole and the resolution process is complete.

6. A non-empty path component shall be a valid part name. If it is not, the pack URI is invalid.

7. The pack URI resolves to the part with this part name in the package identified by the authority component.

Façon étrange même si cela est correct.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 29 décembre 2008 10:18 par neodante
Classé sous :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01