Arricchimento del contenuto

Gli aggregati consentono di arricchire il contenuto con dati esterni. Questi dati provengono da query generiche o tabelle collegate.

Query generiche

Le query sono configurate tramite il modello di pubblicazione nella scheda Aggregator.

I dati recuperati arricchiranno il documento di output XML tramite il relativo elemento principale.

Esempio di restituzione da una query sullo schema del destinatario (nms:destinatario):

<book name="Content Management">
  ...
  <collection-recipient>
    <recipient lastName="Doe" firstName="John" email="john.doe@aolf.com">
    ...
  </collection-recipient>
</book>

L'elemento <collection-recipient> rappresenta l'elemento di input del documento risultante da una query. I dati recuperati vengono restituiti sotto questo elemento; nel nostro esempio, un elenco di destinatari.

Aggiunta di una query

I parametri di query vengono modificati tramite una procedura guidata.

  1. Nella prima pagina, specificare l'etichetta e lo schema contenente i dati da recuperare.

    NOTA

    Il campo di modifica Path viene utilizzato per rinominare l'elemento di output della query.

  2. La pagina successiva consente di selezionare i dati da recuperare.

  3. La pagina successiva definisce la condizione del filtro.

  4. L'ultima pagina avvia un'anteprima dei dati restituiti dalla query.

Tabelle collegate

I collegamenti consentono di recuperare dati esterni collegati al contenuto.

Esistono due tipi di dati collegati:

  • Collegamenti contenuto: questa è la modalità di gestione del contenuto nativa. Il contenuto del collegamento viene integrato automaticamente nel documento di output XML.
  • I collegamenti alle tabelle esterne consentono di accedere a tutte le altre tabelle del database con il vincolo di recuperare i dati del collegamento selezionato con un aggregatore.

Un collegamento contenuto è dichiarato nello schema dati come segue:

<element expandSchemaTarget="cus:chapter" label="Main chapter" name="mainChapter" type="string"/>

La definizione del collegamento viene compilata su un tipo <element> e l'attributo espandereSchemaTarget fa riferimento allo schema di destinazione ("cus:Chapter" nel nostro esempio). Lo schema di riferimento deve essere uno schema di contenuto.

Il contenuto dell'elemento di destinazione arricchisce l'elemento di collegamento, ovvero l'elemento <chapter> nello schema di esempio:

<mainChapter computeString="Introduction" id="7011" title="Introduction" xtkschema="cus:chapter">    
  <page>Introduction to input <STRONG>forms</STRONG>.</page>
</mainChapter>
NOTA

La stringa di calcolo del collegamento viene presentata dall'attributo computeString.

Nel modulo di input, il controllo di modifica del collegamento è dichiarato come segue:

<input type="articleEdit" xpath="mainChapter"/>

L'icona Magnifier consente di aprire il modulo di modifica dell'elemento collegato.

Per compilare una raccolta di collegamenti, aggiungere l'attributo unbound="true" alla definizione dell'elemento di collegamento nello schema dati:

<element expandSchemaTarget="cus:chapter" label="List of chapters" name="chapter"  ordered="true" unbound="true"/>

Il contenuto dell'elemento di destinazione arricchisce ogni elemento di raccolta:

<chapter computeString="Introduction" id="7011" title="Introduction" xtkschema="cus:chapter">    
  <page>Introduction to input <STRONG>forms</STRONG>.</page>
</chapter>

Nel modulo di input, il controllo elenco è dichiarato come segue:

<input editable="false" nolabel="true" toolbarCaption="List of chapters" type="articleList" xpath="chapter" zoom="true"/>

Per visualizzare la stringa di calcolo degli elementi di destinazione, viene visualizzata una colonna predefinita.

Un collegamento a una tabella esterna viene dichiarato nello schema dati come segue:

<element label="Main contact" name="mainContact" target="nms:recipient" type="link"/>

La definizione del collegamento viene compilata su un collegamento di tipo <element> e l'attributo target fa riferimento allo schema di destinazione ("nms:destinatario" nel nostro esempio).

Per convenzione, i collegamenti devono essere dichiarati dall'elemento principale dello schema di dati.

La stringa di calcolo e la chiave dell'elemento di destinazione arricchiscono gli attributi <name>-id e <name>-cs sull'elemento principale.

Nel nostro esempio, il collegamento è popolato nello schema "cus:book", il contenuto dei dati del collegamento è contenuto negli attributi "mainContact-id" e "mainContact-cs":

<book computeString="Content management" date="2006/06/08" id="6106" language="en" mainContact-cs="John Doe (john.doe@adobe.com)" mainContact-id="3012" name="Content management" xtkschema="cus:book">

Il controllo per la modifica dei collegamenti è dichiarato come segue:

<input xpath="mainContact"/>

È possibile limitare la scelta degli elementi di destinazione aggiungendo l'elemento <sysfilter> tramite la definizione del collegamento nel modulo di input:

<input xpath="mainContact">
  <!-- Filter the selection of the link on the Adobe domain -->
  <sysFilter>
    <condition expr="@domain =  'adobe.com '"/>
  </sysFilter>
</input>
NOTA

Questa limitazione si applica anche ai collegamenti di contenuto.

La definizione della raccolta è identica alla definizione di un elenco sugli elementi della raccolta:

<element label="List of contacts" name="contact" unbound="true">
  <element label="Recipient" name="recipient" target="nms:recipient" type="link"/>
</element>

Nel modulo di input, il controllo elenco è dichiarato come segue:

<input nolabel="true" toolbarCaption="List of contacts" type="list" xpath="contact">
  <input xpath="recipient"/>
</input>

NOTA

L’elenco è modificabile e consente di selezionare il collegamento da un controllo di tipo "link" illustrato sopra.

Il contenuto dell'elemento di destinazione arricchisce ogni elemento di raccolta nel documento di output:

<contact id="11504978621" recipient-cs="Doe John (john.doe@adobe.com)" recipient-id="3012"/>
<contact id="11504982510" recipient-cs="Martinez Peter (peter.martinez@adobe.com)" recipient-id="3013"/>

Il contenuto di ciascun collegamento a cui si fa riferimento è limitato alla chiave interna e alla stringa di calcolo dell'elemento di destinazione.

Uno script JavaScript viene utilizzato per arricchire il contenuto dei collegamenti tramite query SOAP.

Esempio: Aggiungendo il nome del destinatario al collegamento "mainContact" e i collegamenti della raccolta "contact":

// Update <mainContact> link
var mainContactId = content.@['mainContact-id']
var query = xtk.queryDef.create(
    <queryDef schema="nms:recipient" operation="get">
      <select>
        <node expr="@lastName"/>
      </select>
      <where>
        <condition expr={"@id="+mainContactId}/>
      </where>
    </queryDef>)

var recipient = query.ExecuteQuery()
content.mainContact.@lastName = recipient.@lastName

// Update <contact> link collection
for each(var contact in content.contact)
{
  var contactId = contact.@['recipient-id']
  var query = xtk.queryDef.create(
    <queryDef schema="nms:recipient" operation="get">
      <select>
        <node expr="@lastName"/>
      </select>
      <where>
        <condition expr={"@id="+contactId}/>
      </where>
    </queryDef>
  )
  
  var recipient = query.ExecuteQuery()
  contact.@lastName = recipient.@lastName
}

Il risultato ottenuto dopo l'esecuzione dello script:

<mainContact lastName="Doe"/>

<contact id="11504978621" lastName="Doe" recipient-cs="Doe John (john.doe@adobe.com)" recipient-id="3012"/>  
<contact id="11504982510" lastName="Martinez" recipient-cs="Martinez Peter (peter.martinez@adobe.com)" recipient-id="3013"/> 

Il contenuto del codice JavaScript viene aggiunto tramite la cartella Administration > Configuration > Content management > JavaScript Codes e deve essere popolato nel modello di pubblicazione per ogni trasformazione.

In questa pagina

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free