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 ?