I thought 1.3 supported dynamic fields in schema.xml?

Guna

On Jan 22, 2009, at 11:54 PM, Shalin Shekhar Mangar wrote:

Oops, one more gotcha. The dynamic field support is only in 1.4 trunk.

On Fri, Jan 23, 2009 at 1:24 PM, Shalin Shekhar Mangar <
shalinman...@gmail.com> wrote:

On Fri, Jan 23, 2009 at 1:08 PM, Gunaranjan Chandraraju <
chandrar...@apple.com> wrote:


<record>
 <coreInfo id="123" , .../>
 <address street="XYZ1" State="CA" ...type="home" />
 <address street="XYZ2" state="CA" ... type="Office"/>
 <address street="XYZ3" state="CA" ....type="Other"/>
</record>

I have setup my DIH to treat these as entities as below

<dataConfig>
 <dataSource type="FileDataSource" encoding="UTF-8" />
 <document>
   <entity name ="f" processor="FileListEntityProcessor"
           baseDir="***"
           fileName=".*xml"
           rootEntity="false"
           dataSource="null" >
      <entity
         name="record"
         processor="XPathEntityProcessor"
         stream="false"
         forEach="/record"
         url="${f.fileAbsolutePath}">
              <field column="ID" xpath="/record/@id" />

              <!-- Address  -->
               <entity
                   name="record_adr"
                   processor="XPathEntityProcessor"
                   stream="false"
                   forEach="/record/address"
                   url="${f.fileAbsolutePath}">
                       <field column="address_street"
xpath="/record/address/@street" />
                       <field column="address_state"
xpath="/record/address//@state" />
                       <field column="address_type"
xpath="/record/address//@type" />
              </entity>
         </entity>
   </entity>
 </document>
</dataConfig>


I think the only way is to create a dynamic field for each attribute
(street, state etc.). Write a transformer to copy the fields from your data config to appropriately named dynamic field (e.g. street_1, state_1, etc).
To maintain this counter you will need to get/store it with
Context#getSessionAttribute(name, val, Context.SCOPE_DOC) and
Context#setSessionAttribute(name, val, Context.SCOPE_DOC).

I cant't think of an easier way.
--
Regards,
Shalin Shekhar Mangar.




--
Regards,
Shalin Shekhar Mangar.

Reply via email to