2 votes

La relation entre un Slide Part et un Custom XML Part n'est-elle pas une relation explicite au lieu d'une relation implicite ?

Si je veux associer un Partie XML personnalisée à un Partie coulissante le moyen que je connais est d'ajouter un fichier custData à l'intérieur de la partie diapositive, et faire référence à l'élément identifiant de la relation de la partie XML personnalisée dans le id attribut.

<p:custDataLst>
  <p:custData r:id="rId1" />
</p:custDataLst>

Si je comprends bien, c'est une explicite car la référence se fait via l'identifiant de la relation.

Cependant, ECMA-376 Partie 1, cinquième édition (dernière version en date), dit qu'un Partie coulissante est seulement autorisé à avoir un implicite relation avec un Partie XML personnalisée (section 13.3.8).

Ça n'a pas vraiment de sens pour moi. Dans la pratique, je vois une relation explicite, alors que la spécification ne permet qu'une relation implicite.

C'est également ainsi que PowerPoint procède si j'utilise le modèle d'objet VSTO. Si je crée un projet VSTO complètement nouveau, et que je modifie la méthode de démarrage pour qu'elle soit comme ceci :

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Application.AfterNewPresentation += pres =>
    {
        var firstSlide = pres.Slides[1];
        var customXmlPart = firstSlide.CustomerData.Add();
        customXmlPart.LoadXML("<test></test>");
    };
}

Ensuite, enregistrez la présentation et regardez la structure des paquets, PowerPoint a fait exactement la même chose : il a ajouté un fichier custData à la diapositive, en faisant référence à la partie XML personnalisée à l'aide de l'id de la relation. Par exemple, un élément explicite relation.

Je suis convaincu que la spécification est correcte, alors qu'est-ce que je manque ?

1voto

René Points 4134

Ok, donc il s'avère que le Bureau ne suit pas sciemment la spécification à la lettre. Heureusement, Microsoft documente les cas où il s'écarte de la norme. Cette documentation peut être trouvée sur le site Site web des spécifications ouvertes sur MSDN . En plongeant dans la documentation ici, j'ai trouvé la page Support des normes Word, Excel et PowerPoint qui contient de nombreux documents PDF expliquant comment la norme est mise en œuvre dans Word, PowerPoint et Excel. Pour aller plus loin [MS-OE376] : Informations sur l'implémentation du bureau pour le support des normes ECMA-376 La section 2.1.23.e. stipule que :

La norme stipule que la partie Présentation est autorisée à avoir une relation implicite avec une partie Stockage de données XML personnalisé.

Office permet également d'établir une relation explicite entre la partie Présentation et une partie Stockage de données XML personnalisé.

Le document PDF ne dit rien à ce sujet pour les diapositives, mais maintenant je ne sais plus si j'ai mal interprété la norme ou si PowerPoint n'a tout simplement pas suivi la norme. Il est assez clair que PowerPoint, dans de nombreux cas, ne suit pas la norme, donc le cas spécifique que j'ai avec une relation explicite entre une diapositive et une image. Partie coulissante et un Partie personnalisée de stockage de données XML est probablement juste un autre cas où PowerPoint ne suit pas la norme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X