In an XHTML document that the ATG platform generates from a repository item, metadata properties are represented by meta tags in the head of the document, while text properties are represented by div tags in the body of the document. The ATG platform generates meta and div tags using values from the repository item’s properties, and uses a URL of the following form to uniquely identify each document:


meta and div properties are output with the following formats:

<meta name="atg:type:property-name" content="property-value">

<div class="atg:role:property-name" id="ID">

The XHTML documents name the properties using a simplified bean property notation. For example, a document generated from a user profile might have firstName and lastName properties corresponding to the equivalent properties of the user repository item type. The document properties corresponding to the city and postalCode properties of the homeAddress child repository item would be and homeAddress.postalCode.

Multi-value properties are given names without array subscripts, as are the property names of multi-value repository item properties. For example, suppose a user repository item can have multiple homeAddress child items. In the ATG platform, the state properties of these items would be named homeAddress[0].state and homeAddress[1].state. In the XHTML documents, however, both properties would be named homeAddress.state.

In addition to the dynamic bean properties you specify in the definition file, the output document also automatically includes certain standard JavaBean properties of the RepositoryItem object as metadata properties. These properties provide information that identifies the repository items represented in the document, and they are indicated by a dollar-sign ($) prefix: $repositoryId, $repository.repositoryName, and $itemDescriptor.itemDescriptorName. If you want to exclude any of these properties to reduce the size of your index, specify the property in the indexing definition file with the suppress attribute. For example:

<item item-descriptor-name="user" is-document="true">
    <property name="$repository.repositoryName" suppress="true"/>
    <property name="dateOfBirth" type="date"/>

The output for the document-level item also includes a $url property and a $baseUrl property, which each contain the URL representing this repository item. The difference between these properties is that if a VariantProducer is used to generate multiple documents from the same repository item, the $url property for each document will include unique query arguments to distinguish the document from the others. The $baseUrl property, which omits the query arguments, will be the same for each document. See Using Variant Producers for more information.

The following example shows sample XHTML output from the definition file that appears in the Creating the Definition File section:

    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
    <meta name="atg:date:dateOfBirth" content="-1583175600000"/>
    <meta name="atg:string:$repository.repositoryName"
    <meta name="atg:string:$repositoryId" content="743"/>
    <meta name="atg:string:$itemDescriptor.itemDescriptorName"
    <meta name="atg:string:$url" content="atgrep:/UserProfiles/user/743"/>
    <meta name="atg:string:$baseUrl"
    <meta name="atg:string:homeAddress.$repository.repositoryName"
    <meta name="atg:string:homeAddress.$repositoryId" content="743"/>
    <div class="atg:role:firstName" id="0">
    <div class="atg:role:lastName" id="1">
    <div class="atg:role:homeAddress.address1" id="2">
      802 Replicant Blvd.
    <div class="" id="3">
      Los Angeles
    <div class="atg:role:homeAddress.state" id="4">
    <div class="atg:role:homeAddress.postalCode" id="5">
    <div class="atg:role:homeAddress.phoneNumber" id="6">
loading table of contents...