Anpassa DITA-elementmappning med AEM-komponenter id1679J600HEL
DITA-element i AEM Guides mappas till motsvarande AEM-komponenter. AEM Guides använder den här mappningen i arbetsflöden som publicering och granskning för att konvertera DITA-element till en motsvarande AEM-komponent. Mappningen definieras i filen elementmapping.xml, som du kommer åt med hjälp av pakethanteraren för Cloud Service-installationen och från URL:en /libs/fmdita/config/elementmapping.xml i CRXDE Lite-läget för lokal installation.
libs. Du måste skapa en övertäckning av noden libs i noden apps och endast uppdatera de filer som krävs i noden apps.Du kan använda de fördefinierade DITA-elementmappningarna eller mappa DITA-element till dina anpassade AEM-komponenter. Om du vill använda dina anpassade AEM-komponenter måste du förstå strukturen för filen elementmapping.xml.
elementmapping.xml-struktur
En översikt på hög nivå av strukturen elementmapping.xml förklaras nedan:
-
Alla DITA-element söks först efter en motsvarande komponentmappning baserat på elementnamnet. Till exempel:
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>I ovanstående exempel återges alla
substepsDITA-element med komponentendita/components/ditaolist. -
Om ett DITA-element inte hittar någon matchning baserat på namnet görs en matchning utifrån
class. Till exempel: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>Om ingen mappning har definierats för elementet
taski ovanstående exempel mappas elementettasktill ovanstående komponent eftersomtaskärvs från komponententopic. -
När ett element har en motsvarande komponentmappning bestäms vidare bearbetning av dess underordnade element av
type. Till exempel: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>typehar följande värden:-
COMPOSITE: Mappningen av element till komponent fortsätter även för underordnade element.
-
STANDALONE: underordnade element för det aktuella elementet har inte mappats ytterligare.
Om elementet
<title>har några underordnade element mappas de inte till någon annan komponent i ovanstående exempel. Komponenten för elementet<title>ansvarar för återgivningen av alla underordnade element i elementet<title>. -
-
Om det finns flera komponenter som är mappade till ett enskilt DITA-element väljs den bästa matchningen för elementet. För att välja den bästa matchningskomponenten övervägs domän- och strukturexSpecialisering för DITA-element.
Om det finns DITA-element med domänspecialisering och en komponent mappas för domänspecialisering får den komponenten hög prioritet.
Om det finns DITA-element med strukturell specialisering och en komponent mappas för strukturell specialisering får den komponenten hög prioritet.
-
Du kan använda
<attributemap>i elementmappningen för att mappa attributvärden till motsvarande nodegenskaper. -
textpropkan användas för att serialisera textinnehållet i ett DITA-element till en nodegenskap. Dessutom kan den användas flera gånger i en elementtagg för att serialisera textinnehållet på flera platser i den publicerade hierarkin. Du kan också anpassa platsen och namnet för målegenskapen. Till exempel:code language-xml <ditaelement> <name>title</name> <componentpath>foundation/components/title</componentpath> <type>STANDALONE</type> <target>para</target> <textprop>**jcr:title**</textprop> </ditaelement>Ovanstående elementmappning anger att textinnehållet i elementet
<title>kommer att sparas som värdet för en egenskap med namnetjcr:titlepå utdatanoden. -
xmlpropkan användas för serialisering av hela XML för ett givet element till en nodegenskap. Komponenten kan sedan läsa den här nodegenskapen och göra anpassad återgivning. Till exempel: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>Ovanstående elementmappning anger att hela XML-koden för elementet
<svg-container>kommer att sparas som ett värde för egenskapendatapå utdatanoden. -
Det finns en särskild attributmappning som hanterar sökvägsupplösning i utdatagenereringsprocessen. Till exempel:
code language-xml <attributemap> <attribute from="href" to="fileReference" ispath="true" rel="source" /> <attribute from="height" to="height" /> <attribute from="width" to="width" /> </attributemap>För ovanstående
attributemapmappas attributethrefi DITA-elementet till en nodegenskap med namnetfileReference. Eftersomispathär inställt påtruelöser utdatagenereringsprocessen den här sökvägen och anger den sedan i nodegenskapenfileReference.Hur den här upplösningen sker bestäms utifrån värdet för attributet
reli attributmappningen.-
Om
rel=source, löses värdet förhrefmed avseende på DITA-källfilen som bearbetas just nu. Värdet förhreftolkas och placeras i värdet för egenskapenfileReference. -
Om
rel=targettolkas värdet förhrefmed avseende på rotpubliceringsplatsen. Värdet förhreftolkas och placeras i värdet för egenskapenfileReference.
Om du inte vill att någon förbearbetning eller upplösning ska ske för sökvägsattribut behöver du inte ange attributet
ispath. Värdet kopieras som det är och komponenten kan utföra den önskade upplösningen. -
DITA-elementschema
Följande är ett exempel på DITA-elementschemat i filen elementmapping.xml:
<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>
I följande tabell beskrivs elementen i DITA-elementschemat:
<ditaelement><class>Klassattributet för DITA-ämnet är till exempel:
- topic/topic<componentpath><type>- COMPOSITE: Bearbeta även underordnade element
- STANDALONE: Hoppar över bearbetning av underordnade element
<attributeprop><note type="Caution"> och komponenten som är mappad för det här elementet har <attributeprop>attr_t</ attributeprop> serialiseras nodens attribut och värde till egenskapen attr_t för motsvarande AEM-nod ( attr_t->type="caution").<textprop>propname_t</textprop>getTextContent()-utdata till en egenskap som definieras av propname_t.Obs! Det här är en optimerad egenskap.
<xmlprop>propname_x </xmlprop>propname_x.<br> Obs! Detta är en optimerad egenskap.<xpath><target>Möjliga värden:
- head: Under huvudnoden
- text: Under styckenoden
<wrapelement><wrapclass>wrapclass.<attributemap><attribute>-noder.<attribute from="attrname" to="propname" ispath="true|false" rel="source|target" />-
from: DITA-attributnamn-
to: AEM-komponentens egenskapsnamn-
ispath: Om attributet är ett sökvägsvärde (till exempel: image)-
rel: Om sökvägen är källan eller måletObs! Om
attrname börjar med % mappar du attrname minus '%' till prop propname.Ytterligare information
-
Om du tänker åsidosätta standardelementmappningen rekommenderar vi att du inte gör ändringarna i standardfilen
elementmapping.xml. Du bör skapa en ny XML-mappningsfil och placera filen på en annan plats, helst i en anpassad programmapp som du skapar. -
I filen
elementmapping.xmlfinns det många mappningsposter som refererar till komponenten fmdita/components/dita/wrapper. Wrapper är en generisk komponent som återger relativt enkla DITA-konstruktioner med hjälp av egenskaper på webbplatsnoden för att generera relevanta HTML. Egenskapenwrapelementanvänds för att generera omslutande taggar och för att delegera den underordnade återgivningen till motsvarande komponenter. Detta är användbart om du bara vill ha en behållarkomponent. I stället för att skapa en ny komponent som återger en viss behållartagg somdivellerpkan du använda komponenten Wrapper med egenskapernawrapelementochwrapclassför att uppnå samma effekt. -
Du bör inte spara stora mängder text i JCR-egenskaper för strängar. Beräkningen av den optimerade egenskapstypen i utdatagenereringen säkerställer att stort textinnehåll inte sparas som strängtyp. Om innehåll som är större än ett visst tröskelvärde behöver sparas, ändras egenskapstypen till binär. Som standard är det här tröskelvärdet konfigurerat till 512 byte, men du kan ändra det i Configuration Manager (com.adobe.fmdita.config.ConfigManager) genom att ändra inställningen Spara som binärt tröskelvärde .
-
Om du tänker åsidosätta en del (och inte alla) av elementmappningarna behöver du inte replikera hela
elementmapping.xml-filen. Du måste skapa en ny XML-mappningsfil och definiera endast de element som du åsidosätter. -
När du har skapat XML-filen på den anpassade platsen uppdaterar du inställningen
Override Element Mappingicom.adobe.fmdita.config.ConfigManager-paketet.