bonsoir,
lors de la migration d’une dérivation Opale3.5=>opale3.6, j’ai remarqué que les attributs xmlns ne sont pas conservés :
dans le fichier de départ, j’ai le noeud racine suivant :
<sfm:mov xmlns:sc=« http://www.utc.fr/ics/scenari/v3/core » xmlns:op=« utc.fr:ics/opale3 » xmlns:sfm=« http://www.utc.fr/ics/scenari/v3/filemeta »>
après la migraton, le noeud est devenu : <sfm:mov xmlns:sfm=« http://www.utc.fr/ics/scenari/v3/filemeta »>
Comment faire pour conserver les xmlns identiques au départ et à l’arrivée ?
build.xml (4,5 Ko)
meta.xsl (3,0 Ko)
Le namespace op pas présent sur la balise fille de sfm:mov ?
c’est surtout le namespace sc qui pose problème car quand je le rajoute manuellement, les erreurs disparaissent.
je n’arrive pas à l’inclure dans le xsl de migration.
j’ai un peu plus ciblé le problème :
l’erreur est causée par la présence d’une ressource statique dans l’alternative papier de la vidéo. Le noeud généré est :
<sp:staticRes sc:refUri=« /images/images/ECP.png »>
<op:indexM/>
</sp:staticRes>
Comme le nameSpace sc n’est pas présent dans la balise sfm, une erreur est levée. Si j’ajoute en manuel cette ressource statique, la balise sfm est modifiée est elle porte bien les namespace op, sc et sfm comme dans le fichier de départ.
Comment faire pour conserver les namespaces identique au départ et à l’arrivée ?
Bonjour,
Vous tombez là sur une anomalie présente dans SCENARI 4.2 (et corrigée dans SCENARI5.0+) : les namespaces utilisés exclusivement dans des attributs ne sont pas déclarés automatiquement lors de la sérialisation XML à la suite d’une migration.
Le seul contexte ou cela peut se produire dans des contenus scenari, c’est sur les liens vers des items présents dans des métadonnées de ressources.
En attendant SCENARI5.0, pour contourner ce problème, il faut déclarer explicitement ce namespace « sc » dans la XSL de migration des métadonnées. Ex :
<xsl:template match="/*">
<xsl:copy>
<xsl:attribute name="xmlns:sc">http://www.utc.fr/ics/scenari/v3/core</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
Cordialement,
Antoine
Kelis
Un grand merci, cela fonctionne parfaitement.
cordialement