Elegir un mecanismo de plantilla adecuado

En general, el formato de cualquier plantilla debe seguir la misma estructura que la plantilla estándar.

Partiendo de esta regla general, hay dos maneras de personalizar la plantilla estándar, diferenciadas por la cantidad de datos que devuelven y cómo se pueden invocar:
  • Plantillas estáticas
  • Plantillas dinámicas

Las plantillas estáticas proporcionan la posibilidad de añadir nuevos elementos pero no eliminar ninguno de los valores predeterminados. Una plantilla estática es omnipresente, la recoge de forma predeterminada una API siempre que se invoca dicha API.

Las plantillas estáticas proporcionan la posibilidad de añadir nuevos elementos y eliminar cualquiera de los elementos predeterminados de la plantilla estándar. Una plantilla dinámica es una instancia, puesto que sólo se recoge para una llamada de API específica como, por ejemplo, cuando está configurada para hacerlo durante la extensibilidad de la interfaz de usuario.

En la tabla siguiente se resume una comparación de las diferencias entre los dos tipos de mecanismos de plantillas.


Tipos de plantilla Elementos XML permitidos Comportamiento
Plantilla estática

Los elementos de plantilla predeterminados no se pueden eliminar.

Se pueden añadir nuevos elementos.

Omnipresentes. Se recogen de forma predeterminada por una API.
Plantilla dinámica

Los elementos de plantillas predeterminados.

Se pueden añadir nuevos elementos.

Instancia. Se recogen para una llamada de API específica, tal como se ha configurado durante la extensibilidad de interfaz de usuario.

Elija cuál de estos mecanismos se adapta mejor a las necesidades y se ajusta a él.

Recuerde que cuando define una plantilla dinámica, se devuelven todos los valores posibles. Para devolver la menor cantidad posible de datos para un elemento, cuando está borrando elementos que no necesita, debe incluir al padre con al menos uno de sus atributos.

Si deja un elemento en blanco o incluye atributos no deseados en el elemento padre, se devuelven todos los valores, tal como se muestra en el ejemplo siguiente de una plantilla dinámica mal borrada.

Plantilla dinámica mal borrada

<!-- getOrderDetails Output XML --> 
<Order> 
   <OrderLines> 
     <!--1 or more order line--> 
       <OrderLine> 
          <Item CountryOfOrigin="" ItemDesc="" ItemID=""/> 
          <Schedules> 
             <Schedule Attr1 ...... /> 
          </Schedules> 
       </OrderLine> 
   </OrderLines> 
<Order>

Puesto que la plantilla dinámica mal borrada especifica todos los atributos OrderLine, así como algunos atributos Item y Schedule, la API devuelve valores similares a lo siguiente.

<OrderLine AllocationDate="03/28/2002" CarrierAccountNo="112233" 
CarrierServiceCode="Next Day Air" Createprogid="CustomTester"
Createts="03/28/2002" Createuserid="CustomTester" CustomerLinePONo="999"
CustomerPONo="111" DeliveryCode="AIR" DepartmentCode="Clothing"
ExtendedFlag="" ExternalReference1="" ExternalReference2="" 
ExternalReference3="" ExternalReference4="" ExternalReference5="" 
FreightTerms="Buyer" HoldFlag="N" HoldReasonCode="HoldReas" 
ImportLicenseExpDate="08/08/2002" ImportLicenseNo="225588" 
InternalReference1="" InternalReference2="" InternalReference3="" 
InternalReference4="" InternalReference5="" KitCode=""
LineClass="" LineSeqNo="1.1" LineType="Single" Lockid="1" MarkForKey=""
Modifyprogid="CustomTester" Modifyts="03/28/2002" 
Modifyuserid="CustomTester" OrderClass="NEW" 
OrderHeaderKey="200203281036245174" OrderLineKey="200203281036245175"
OrderedQty="5.00" OrigOrderLineKey="" OriginalOrderedQty="5.00"
OtherCharges="0.00" OtherChargesPerLine="0.00" OtherChargesPerUnit="0.00"
PackListType="Bill" PersonalizeCode="PersCode" PersonalizeFlag="" 
PickableFlag="Y" PricingDate="01/01/2500" PrimeLineNo="1" 
Purpose="Purpose" ReceivingNode="B1N1" ReqCancelDate="01/01/2500" 
ReqDeliveryDate="04/04/2002" ReqShipDate="03/30/2002"
ReservationID="" ReservationPool="" SCAC="UPS" ShipNode="E1N1" ShipToID=""
ShipToKey="" ShipTogetherNo="Y" SplitQty="0.00" SubLineNo="1" 
TotalDiscountAmount="0.00" TotalOtherCharges="0.00"> 
<Item CountryOfOrigin="" ItemDesc="" ItemID=""/> 
<Schedules> 
<Schedule ExpectedDeliveryDate="" ExpectedShipmentDate=""
TagNumber="" OrderHeaderKey="" OrderLineKey="" OrderLineScheduleKey=""
ScheduleNo="" ShipByDate="" Quantity=""  PromisedApptStartDate=""
PromisedApptEndDate=""/> 
</Schedules> 
</OrderLine> 
</OrderLines> 
</Order>

Plantilla de salida personalizada cuidadosamente borrada

En esta plantilla de salida personalizada cuidadosamente borrada, la plantilla dinámica se ha recortado teniendo en cuenta las directrices siguientes:
  • La estructura de la plantilla de salida personalizada refleja la estructura de la pantalla de salida estándar.
  • Los elementos que sobran (respecto a los kits, las planificaciones, las direcciones, etc.) quedan borrados.
  • Los elementos padre se llenan con un atributo para poder suprimir el exceso de detalle. Pr ejemplo, si se especifica el atributo OrderNo para el elemento Order, se suprimen todos los demás atributos Order.
<!-- getOrderDetails Output XML --> 
<Order OrderNo=””> 
   <OrderLines>
		    <!--1 or more order line--> 
        <OrderLine PrimeLineNo=""> 
            <Item CountryOfOrigin="" ItemDesc="" ItemID=""/> 
     </OrderLine> 
    </OrderLines> 
</Order>

Dado que esta plantilla de salida personalizada cuidadosamente borrada especifica únicamente unos cuantos elementos Item y sólo un atributo para su elemento padre, la API getOrderDetails() sólo devuelve los valores siguientes:

<?xml version="1.0" encoding="UTF-8" ?> 
<Order OrderNo=Y00000765> 
   <OrderLines> 
      <OrderLine PrimeLineNo="1"> 
          <Item CountryOfOrigin="IN" Item Description" 
ItemDesc="Green Sari" ItemID="GNSARI5LT" /> 
       </OrderLine> 
       <OrderLine PrimeLineNo="3"> 
          <Item CountryOfOrigin="CA" ItemDesc="Pink Scarf" 
ItemID="PKSCARF4LT" /> 
       </OrderLine> 
    </OrderLines> 
</Order>

Este método para borrar las plantillas mejora el rendimiento, puesto que se ha impedido el acceso de la base de datos a programas de orden y otros elementos no deseados.