Personnaliser le mappage d'éléments DITA avec des composants AEM id1679J600HEL
Les éléments DITA dans AEM Guides sont mappés à leurs composants AEM correspondants. AEM Guides utilise ce mappage dans des workflows tels que la publication et la révision pour convertir un élément DITA en composant AEM correspondant. Le mappage est défini dans le fichier elementmapping.xml, accessible à l’aide du gestionnaire de packages pour la configuration de Cloud Service et à partir de l’URL : /libs/fmdita/config/elementmapping.xml en mode CRXDE Lite pour la configuration On-Premise.
libs. Vous devez créer un recouvrement du nœud libs dans le nœud apps et mettre à jour les fichiers requis dans le nœud apps uniquement.Vous pouvez utiliser les mappages d'éléments DITA prédéfinis ou mapper des éléments DITA à vos composants AEM personnalisés. Pour utiliser vos composants AEM personnalisés, vous devez connaître la structure du fichier elementmapping.xml.
structure elementmapping.xml
Vous trouverez ci-dessous un aperçu général de la structure elementmapping.xml :
-
Chaque élément DITA est d'abord recherché pour un mappage de composant correspondant en fonction du nom de l'élément. Par exemple :
code language-xml <ditaelement> <name>**substeps**</name> <class>- topic/ol task/substeps</class> <componentpath>dita/components/ditaolist</componentpath> <type>COMPOSITE</type> <target>para</target> </ditaelement>Dans l'exemple ci-dessus, tous les éléments DITA
substepssont rendus à l'aide du composantdita/components/ditaolist. -
Si un élément DITA ne trouve pas de correspondance basée sur le nom, une correspondance basée sur le
classest effectuée. Par exemple :code language-xml <ditaelement> <name>topic</name> <class>**- topic/topic**</class> <componentpath>fmdita/components/dita/topic</componentpath> <type>COMPOSITE</type> <target>para</target> <attributemap> <attribute from="id" to="id" /> </attributemap> </ditaelement>Dans l’exemple ci-dessus, si aucun mappage n’est défini pour l’élément
task, l’élémenttaskest mappé au composant ci-dessus, cartaskest hérité du composanttopic. -
Lorsqu’un élément possède un mappage de composant correspondant, le traitement ultérieur de ses éléments enfants est déterminé par
type. Par exemple :code language-xml <ditaelement> <name>title</name> <class>- topic/title</class> <componentpath>foundation/components/title</componentpath> <type>**STANDALONE**</type> <target>para</target> <textprop>jcr:title</textprop> </ditaelement>typeprend les valeurs suivantes :-
COMPOSITE : le mappage élément à composant continue pour les éléments enfants également.
-
AUTONOME : les éléments enfants de l’élément actif ne sont plus mappés.
Dans l’exemple ci-dessus, si l’élément
<title>comporte des éléments enfants, ils ne seront mappés à aucun autre composant. Le composant de<title>’élément est responsable du rendu de tous les éléments enfants dans l’élément<title>. -
-
S'il existe plusieurs composants mappés à un seul élément DITA, la meilleure correspondance pour l'élément est sélectionnée. Pour sélectionner le composant qui correspond le mieux, une spécialisation de domaine et de structure des éléments DITA est prise en compte.
S’il existe des éléments DITA avec une spécialisation de domaine et qu’un composant est mappé pour la spécialisation de domaine, la priorité élevée est accordée à ce composant.
De même, si des éléments DITA sont dotés d'une spécialisation structurelle et qu'un composant est mappé pour la spécialisation structurelle, la priorité est accordée à ce composant.
-
Vous pouvez utiliser des
<attributemap>dans le mappage d’éléments pour mapper des valeurs d’attribut aux propriétés de nœud correspondantes. -
textproppeut être utilisé pour sérialiser le contenu texte d'un élément DITA en une propriété de nœud. En outre, elle peut être utilisée plusieurs fois dans une balise d’élément pour sérialiser le contenu du texte à plusieurs emplacements dans la hiérarchie publiée. Vous pouvez également personnaliser l’emplacement et le nom de la propriété cible. Par exemple :code language-xml <ditaelement> <name>title</name> <componentpath>foundation/components/title</componentpath> <type>STANDALONE</type> <target>para</target> <textprop>**jcr:title**</textprop> </ditaelement>Le mappage de l’élément ci-dessus indique que le contenu textuel de
<title>’élément sera enregistré en tant que valeur d’une propriété nomméejcr:titlesur le nœud de sortie. -
xmlproppeut être utilisé pour sérialiser l’intégralité du code XML d’un élément donné en une propriété de nœud. Le composant peut ensuite lire cette propriété de nœud et effectuer un rendu personnalisé. Par exemple :code language-xml <ditaelement> <name>svg-container</name> <class>+ topic/foreign svg-d/svg-container</class> <componentpath>fmdita/components/dita/svg</componentpath> <type>STANDALONE</type> <target>para</target> <xmlprop>**data**</xmlprop> </ditaelement>Le mappage d’éléments ci-dessus indique que l’intégralité du balisage XML pour l’élément
<svg-container>sera enregistrée en tant que valeur d’une propriété nomméedatasur le nœud de sortie. -
Il existe un mappage d’attributs spécial pour gérer la résolution de chemin dans le processus de génération de sortie. Par exemple :
code language-xml <attributemap> <attribute from="href" to="fileReference" ispath="true" rel="source" /> <attribute from="height" to="height" /> <attribute from="width" to="width" /> </attributemap>Pour l'
attributemapci-dessus, l'attributhrefdans votre élément DITA sera mappé à une propriété de nœud nomméefileReference. Maintenant queispathest défini surtrue, le processus de génération de sortie résout ce chemin d’accès, puis le définit dansfileReferencepropriété de nœud .Le mode de résolution est déterminé en fonction de la valeur de l’attribut
reldans le mappage des attributs.-
Si
rel=source, la valeur dehrefest résolue par rapport au fichier source DITA en cours de traitement. La valeur dehrefest résolue et placée dans la valeur defileReferencepropriété . -
Si
rel=target, la valeur dehrefest résolue par rapport à l’emplacement de publication racine. La valeur dehrefest résolue et placée dans la valeur defileReferencepropriété .
Si vous ne souhaitez pas qu’un prétraitement ou une résolution se produise sur les attributs de chemin, vous n’avez pas besoin de spécifier l’attribut
ispath. La valeur est copiée telle quelle et le composant peut effectuer la résolution requise. -
Schéma de l'élément DITA
Voici un exemple du schéma d'élément DITA dans elementmapping.xml fichier :
<ditaelement>
<name>element_name</name>
<class>element_class</class>
<componentpath>fmdita/components/dita/component_name</componentpath>
<type>COMPOSITE|STANDALONE</type>
<attributeprop>propname_a</attributeprop>
<textprop>propname_t</textprop>
<xmlprop>propname_x</xmlprop>
<xpath>xpath expression string</xpath>
<target>head|para</target>
<wrapelement>div</wrapelement>
<wrapclass>class_name</wrapclass>
<attributemap>
<attribute from="attrname" to="propname" ispath="true|false" rel="source|target" />
</attributemap>
<skip>true|false</skip>
</ditaelement>
Le tableau suivant décrit les éléments du schéma d'élément DITA :
<ditaelement><class>Par exemple, l'attribut class pour la rubrique DITA est :
- topic/topic<componentpath><type>- COMPOSITE : traitez également les éléments enfants
- AUTONOME : ignore le traitement des éléments enfants
<attributeprop><note type="Caution"> élément et que le composant mappé pour cet élément a <attributeprop>attr_t</ attributeprop>, l’attribut et la valeur du nœud sont sérialisés sur attr_t propriété du nœud AEM correspondant ( attr_t->type="caution").<textprop>propname_t</textprop>getTextContent() dans la propriété définie par propname_t.Remarque : il s’agit d’une propriété optimisée.
<xmlprop>propname_x </xmlprop>propname_x.<br> Remarque : il s’agit d’une propriété optimisée.<xpath><target>Valeurs possibles :
- head : sous le nœud head
- text : sous le nœud paragraph
<wrapelement><wrapclass>wrapclass.<attributemap><attribute>.<attribute from="attrname" to="propname" ispath="true|false" rel="source|target" />-
from : nom d'attribut DITA-
to : nom de propriété du composant AEM-
ispath : si l’attribut est une valeur de chemin (par exemple : image)-
rel : si le chemin d’accès est lesource ou cible Remarque : si
attrname commence par %, mappez attrname minus '%' à la prop ' propname'.Remarques complémentaires
-
Si vous prévoyez de remplacer le mappage d’élément par défaut, il est recommandé de ne pas apporter les modifications dans le fichier
elementmapping.xmlpar défaut. Créez un fichier XML de mappage et placez-le à un autre emplacement, de préférence dans le dossier d’applications personnalisées que vous créez. -
Dans le fichier
elementmapping.xml, il existe de nombreuses entrées de mappage faisant référence au composant fmdita/components/dita/wrapper. Wrapper est un composant générique qui effectue le rendu de constructions DITA relativement simples à l’aide de propriétés sur le nœud de leur site pour générer des HTML pertinentes. Elle utilise la propriétéwrapelementpour générer des balises englobantes et délègue le rendu enfant aux composants correspondants. Cela s’avère utile dans les cas où vous ne souhaitez qu’un composant de conteneur. Au lieu de créer un composant qui effectue le rendu d’une balise conteneur spécifique telle quedivoup, vous pouvez utiliser le composant Wrapper avec les propriétéswrapelementetwrapclasspour obtenir le même effet. -
Il n’est pas recommandé d’enregistrer de grandes quantités de texte dans les propriétés String JCR. Le calcul du type de propriété optimisé dans la génération de sortie garantit que le contenu de texte volumineux n’est pas enregistré en tant que type de chaîne. Au lieu de cela, lorsque du contenu supérieur à un certain seuil doit être enregistré, le type de la propriété est remplacé par binaire. Par défaut, ce seuil est configuré sur 512 octets, mais peut être modifié dans Configuration Manager (com.adobe.fmdita.config.ConfigManager) en modifiant le paramètre Enregistrer en tant que seuil binaire.
-
Si vous prévoyez de remplacer certains (et pas tous) des mappages d’éléments, vous n’avez pas à répliquer le fichier
elementmapping.xmlentier. Vous devez créer un nouveau fichier de mapping XML et définir uniquement les éléments que vous remplacez. -
Après avoir créé le fichier XML à l’emplacement personnalisé, mettez à jour le paramètre
Override Element Mappingdans le lotcom.adobe.fmdita.config.ConfigManager.