If I want to associate a Custom XML Part to a Slide Part, the way I know of, is to add a custData element inside the Slide Part, and reference the relationship id of the Custom XML Part in the id attribute.
<p:custDataLst>
<p:custData r:id="rId1" />
</p:custDataLst>
As I understand it, this is an explicit relationship, because the reference is via the relationship id.
However, ECMA-376 Part 1, fifth edition (Latest version currently), says that a Slide Part is only permitted to have an implicit relationship to a Custom XML Part (Section 13.3.8).
That doesn't really make sense to me. In practice, I see an explicit relationship, while the specification only allows for an implicit one.
This is also how PowerPoint do it if I use the VSTO object model. If I create a completely fresh VSTO project, and edit the startup method to be like this:
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>");
};
}
Then save the presentation and look at the package structure, PowerPoint did the exact same thing: Added a custData element to the slide, referencing the custom XML part using the relationship id. I.e. an explicit relationship.
I'm confident that the specification is correct, so what am I missing?