Enriquecimiento de contenido

Los acumuladores le permiten enriquecer el contenido con datos externos. Estos datos proceden de consultas genéricas o tablas vinculadas.

Consultas genéricas

Las consultas se configuran mediante la plantilla de publicación de la pestaña Aggregator.

Los datos recuperados enriquecen el documento de salida XML a través de su elemento principal.

Ejemplo de devolución desde una consulta en el esquema del destinatario (nms:recipient):

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

El elemento <collection-recipient> representa el elemento de entrada del documento resultante de una consulta. Los datos recuperados se devuelven en este elemento; en nuestro ejemplo, una lista de destinatarios.

Adición de una consulta

Los parámetros de la consulta se editan mediante un asistente.

  1. En la primera página, especifique la etiqueta y el esquema que contiene los datos que se van a recuperar.

    Nota

    El campo de edición Path se utiliza para cambiar el nombre del elemento de salida de la consulta.

  2. La siguiente página permite seleccionar los datos que se van a recuperar.

  3. La siguiente página define la condición de filtro.

  4. La última página inicia una previsualización de los datos devueltos por la consulta.

Tablas vinculadas

Los vínculos permiten recuperar datos externos vinculados al contenido.

Hay dos tipos de datos vinculados:

  • Vínculos de contenido: modo nativo de gestión del contenido. El contenido del vínculo se integra automáticamente en el documento de salida XML.
  • Los vínculos a listas externas proporcionan acceso a las demás listas de la base de datos con la limitación de recuperar los datos del vínculo seleccionado mediante un acumulador.

En el esquema de datos, se define un vínculo de contenido de la siguiente manera:

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

La definición del vínculo se rellena en un tipo string <element>, y el atributo expandSchemaTarget hace referencia al esquema de destino (“cus:chapter” en el ejemplo). El esquema de referencia debe ser de contenido.

El contenido del elemento de destino enriquece el elemento de vínculo, es decir, el elemento <chapter> en el esquema de ejemplo:

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

La Compute string del vínculo se presenta desde el atributo computeString.

En el formulario de entrada, el control de edición del vínculo se declara de la siguiente manera:

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

El icono Magnifier permite abrir el formulario de edición del elemento relacionado.

Para rellenar una colección de vínculos, añada el atributo unbound="true" a la definición del elemento de vínculo en el esquema de datos:

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

El contenido del elemento de destino enriquece cada elemento de colección:

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

En el formulario de entrada, el control de lista se declara de la siguiente manera:

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

Se muestra una columna predeterminada para ver la Compute string de los elementos de destino.

Se declara un vínculo a una tabla externa en el esquema de datos de la siguiente manera:

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

La definición del vínculo se rellena en un tipo vínculo <element> y el atributo target hace referencia al esquema de destino (“nms:destinatario” en el ejemplo).

Por norma, los vínculos deben declararse del elemento principal del esquema de datos.

Compute string y la clave del elemento de destino enriquecen los atributos <name>-id y <name>-cs en el elemento principal.

En nuestro ejemplo, el vínculo se rellena en el esquema “cus:book”, el contenido de los datos del vínculo se incluye en los atributos “mainContact-id” y “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">

El control de edición de vínculos se declara de la siguiente manera:

<input xpath="mainContact"/>

Puede restringir la selección de elementos de destino añadiendo el elemento <sysfilter> a través de la definición del vínculo en el formulario de entrada:

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

Esta restricción también se aplica a los vínculos de contenido.

La definición de la colección es idéntica a la definición de una lista en los elementos de colección:

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

En el formulario de entrada, el control de lista se declara de la siguiente manera:

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

Nota

La lista es editable y permite seleccionar el vínculo de un control de tipo “vínculo” presentado más atrás.

El contenido del elemento de destino enriquece cada elemento de colección en el documento de salida:

<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"/>

El contenido de cada vínculo al que se hace referencia se limita a la clave interna y a la Compute string del elemento de destino.

Se utiliza un script de JavaScript para enriquecer el contenido de los vínculos mediante consultas SOAP.

Ejemplo: añadir el nombre del destinatario al vínculo “mainContact” y a los vínculos de la colección “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
}

El resultado obtenido después de la ejecución del 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"/> 

El contenido del código JavaScript se añade mediante la carpeta Administration > Configuration > Content management > JavaScript Codes y debe rellenarse en la plantilla de publicación para cada transformación.

En esta página