II.3  i Files

   
  Example II.3 interpro_test_tutorial.i

#
# The Icarus base representation for the XML "INTERPRO_TEST" databank.
#
# NOTES: 
# 1. Generated automatically by the DTD-to-Icarus translator.
# 2. To be edited at least to supply:
#    a) the XML "INTERPRO_TEST" databank entry element type
#       (attribute "xmlEntryElementType", class "$Library");
#    b) the XML "INTERPRO_TEST" databank field short names
#       (attribute "short", class "$SrsField");
#    c) if missing, the "indexField:$DF_ID" specification within
#       the index metaphor either for the object or for the attribute
#       carrying the XML "INTERPRO_TEST" databank entry ID.
# 3. Remember to edit the $SRSSITE/srsdb.i file to:
#    a) include this file;
#    b) specify the XML "INTERPRO_TEST" databank location;
#    c) specify the XML "INTERPRO_TEST" databank ID;
#    and then invoke the "srssection" command in order to make
#    the XML "INTERPRO_TEST" databank available into the SRS system.
#

$INTERPRO_TEST_DB=$Library:[INTERPRO_TEST group:$XML_LIBS
  dataSource:xml
#  defaultEntryView:$Entries_View
  defaultEntryView:$INTERPRO_TEST_ENTRY_VIEW
  format:$INTERPRO_TEST_FORMAT
  xmlEntryElementType:'interpro'
  searchName:'interpro_test.xml'
]

#
# The default table view.
#

$INTERPRO_TEST_VIEW=$View:[INTERPRO_TEST_VIEW
  objLoader:$INTERPRO_TEST_LOADER
#  printEntryList:n
#  type:entry
#  layout:@{
#    $FileDo:"($Env:SRSSITE)/interpro_test.il"
#  }
]

#
# The single entry view.
#

$INTERPRO_TEST_ENTRY_VIEW=$View:[INTERPRO_TEST_ENTRY_VIEW
  objLoader:$INTERPRO_TEST_LOADER
  printEntryList:n
  type:entry
  layout:@{
    $FileDo:"($Env:SRSROOT)/demo/interpro_test.il"
#    $FileDo:"($Env:SRSSITE)/interpro_test.il"
  }
]

#
# The XML "INTERPRO_TEST" databank flat loader.
#

$INTERPRO_TEST_LOADER=$LoadClass:[INTERPRO_TEST_LOADER
  libs:{$INTERPRO_TEST_DB}
  attrs:{
    $LoadAttr:["abstract" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_1]}]
#    $LoadAttr:["author_list" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_2]}]
#    $LoadAttr:["book_title" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_3]}]
#    $LoadAttr:["category" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_4]}]
#    $LoadAttr:["cite_idref" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_5_1]}]
#    $LoadAttr:["classification_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_1]}]
#    $LoadAttr:["classification_class_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_2]}]
#    $LoadAttr:["db_info_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_1]}]
#    $LoadAttr:["db_info_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_2]}]
#    $LoadAttr:["db_info_file_date" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_3]}]
#    $LoadAttr:["db_info_entry_count" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_4]}]
#    $LoadAttr:["db_xref_db" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1]}]
#    $LoadAttr:["db_xref_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_2]}]
#    $LoadAttr:["db_xref_dbkey" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3]}]
#    $LoadAttr:["db_xref_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_4]}]
#    $LoadAttr:["del_ref_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_9_1]}]
#    $LoadAttr:["description" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_10]}]
#    $LoadAttr:["example" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_11]}]
#    $LoadAttr:["interpro_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_12_1]}]
    $LoadAttr:["interpro_type" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_2]}]
#    $LoadAttr:["interpro_short_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3]}]
#    $LoadAttr:["journal" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_13]}]
#    $LoadAttr:["location_firstpage" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_14_1]}]
#    $LoadAttr:["location_lastpage" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_14_2]}]
#    $LoadAttr:["location_volume" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_14_3]}]
#    $LoadAttr:["location_issue" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_14_4]}]
    $LoadAttr:["name" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_15]}]
#    $LoadAttr:["protein_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_16_1]}]
#    $LoadAttr:["publication_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_17_1]}]
#    $LoadAttr:["book_info_english_language" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_18_1]}]
#    $LoadAttr:["book_info_availability" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_18_2]}]
#    $LoadAttr:["publisher" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_19]}]
#    $LoadAttr:["isbn" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_20]}]
#    $LoadAttr:["reaction" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_21]}]
#    $LoadAttr:["rel_ref_ipr_ref" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_22_1]}]
#    $LoadAttr:["rel_ref_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_22_2]}]
#    $LoadAttr:["sec_ac_acc" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_23_1]}]
#    $LoadAttr:["taxon" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_24]}]
#    $LoadAttr:["taxon_tax_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_24_1]}]
#    $LoadAttr:["title" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_25]}]
#    $LoadAttr:["type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_26]}]
#    $LoadAttr:["url" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_27]}]
#    $LoadAttr:["year" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_28]}]
  }
]

#
# The XML "INTERPRO_TEST" databank format.
#

$INTERPRO_TEST_FORMAT=$LibFormat:[
  fields:{
    # The following field is required, so please do not remove it.
    # Also, modify the 'loadPath' if an ID different from the one
    # retrieved automatically by SRS is required, for example
    # within views.
    $Field:[$DF_ID index:id indexToken:xml
            loadPath:"interpro/@id"]
    # All the following fields are commented out for convenience.
    # Please uncomment the ones of interest.
    $Field:[$DF_INTERPRO_TEST_1 index:str indexToken:xml
            loadPath:"abstract"]
#    $Field:[$DF_INTERPRO_TEST_2 index:str indexToken:xml
#            loadPath:"author_list"]
#    $Field:[$DF_INTERPRO_TEST_3 index:str indexToken:xml
#            loadPath:"book_title"]
#    $Field:[$DF_INTERPRO_TEST_4 index:str indexToken:xml
#            loadPath:"category"]
#    $Field:[$DF_INTERPRO_TEST_5_1 index:str indexToken:xml
#            loadPath:"cite/@idref"]
#    $Field:[$DF_INTERPRO_TEST_6_1 index:str indexToken:xml
#            loadPath:"classification/@id"]
#    $Field:[$DF_INTERPRO_TEST_6_2 index:str indexToken:xml
#            loadPath:"classification/@class_type"]
#    $Field:[$DF_INTERPRO_TEST_7_1 index:str indexToken:xml
#            loadPath:"db_info/@name"]
#    $Field:[$DF_INTERPRO_TEST_7_2 index:str indexToken:xml
#            loadPath:"db_info/@version"]
#    $Field:[$DF_INTERPRO_TEST_7_3 index:str indexToken:xml
#            loadPath:"db_info/@file_date"]
#    $Field:[$DF_INTERPRO_TEST_7_4 index:str indexToken:xml
#            loadPath:"db_info/@entry_count"]
#    $Field:[$DF_INTERPRO_TEST_8_1 index:str indexToken:xml
#            loadPath:"db_xref/@db"]
#    $Field:[$DF_INTERPRO_TEST_8_2 index:str indexToken:xml
#            loadPath:"db_xref/@version"]
#    $Field:[$DF_INTERPRO_TEST_8_3 index:str indexToken:xml
#            loadPath:"db_xref/@dbkey"]
#    $Field:[$DF_INTERPRO_TEST_8_4 index:str indexToken:xml
#            loadPath:"db_xref/@name"]
#    $Field:[$DF_INTERPRO_TEST_9_1 index:str indexToken:xml
#            loadPath:"del_ref/@id"]
#    $Field:[$DF_INTERPRO_TEST_10 index:str indexToken:xml
#            loadPath:"description"]
#    $Field:[$DF_INTERPRO_TEST_11 index:str indexToken:xml
#            loadPath:"example"]
#    $Field:[$DF_INTERPRO_TEST_12_1 index:str indexToken:xml
#            loadPath:"interpro/@id"]
    $Field:[$DF_INTERPRO_TEST_12_2 index:str indexToken:xml
            loadPath:"interpro/@type"]
#    $Field:[$DF_INTERPRO_TEST_12_3 index:str indexToken:xml
#            loadPath:"interpro/@short_name"]
#    $Field:[$DF_INTERPRO_TEST_13 index:str indexToken:xml
#            loadPath:"journal"]
#    $Field:[$DF_INTERPRO_TEST_14_1 index:str indexToken:xml
#            loadPath:"location/@firstpage"]
#    $Field:[$DF_INTERPRO_TEST_14_2 index:str indexToken:xml
#            loadPath:"location/@lastpage"]
#    $Field:[$DF_INTERPRO_TEST_14_3 index:str indexToken:xml
#            loadPath:"location/@volume"]
#    $Field:[$DF_INTERPRO_TEST_14_4 index:str indexToken:xml
#            loadPath:"location/@issue"]
    $Field:[$DF_INTERPRO_TEST_15 index:str indexToken:xml
            loadPath:"name"]
#    $Field:[$DF_INTERPRO_TEST_16_1 index:str indexToken:xml
#            loadPath:"protein/@id"]
#    $Field:[$DF_INTERPRO_TEST_17_1 index:str indexToken:xml
#            loadPath:"publication/@id"]
#    $Field:[$DF_INTERPRO_TEST_18_1 index:str indexToken:xml
#            loadPath:"book_info/@english_language"]
#    $Field:[$DF_INTERPRO_TEST_18_2 index:str indexToken:xml
#            loadPath:"book_info/@availability"]
#    $Field:[$DF_INTERPRO_TEST_19 index:str indexToken:xml
#            loadPath:"publisher"]
#    $Field:[$DF_INTERPRO_TEST_20 index:str indexToken:xml
#            loadPath:"isbn"]
#    $Field:[$DF_INTERPRO_TEST_21 index:str indexToken:xml
#            loadPath:"reaction"]
#    $Field:[$DF_INTERPRO_TEST_22_1 index:str indexToken:xml
#            loadPath:"rel_ref/@ipr_ref"]
#    $Field:[$DF_INTERPRO_TEST_22_2 index:str indexToken:xml
#            loadPath:"rel_ref/@type"]
#    $Field:[$DF_INTERPRO_TEST_23_1 index:str indexToken:xml
#            loadPath:"sec_ac/@acc"]
#    $Field:[$DF_INTERPRO_TEST_24 index:str indexToken:xml
#            loadPath:"taxon"]
#    $Field:[$DF_INTERPRO_TEST_24_1 index:str indexToken:xml
#            loadPath:"taxon/@tax_id"]
#    $Field:[$DF_INTERPRO_TEST_25 index:str indexToken:xml
#            loadPath:"title"]
#    $Field:[$DF_INTERPRO_TEST_26 index:str indexToken:xml
#            loadPath:"type"]
#    $Field:[$DF_INTERPRO_TEST_27 index:str indexToken:xml
#            loadPath:"url"]
#    $Field:[$DF_INTERPRO_TEST_28 index:str indexToken:xml
#            loadPath:"year"]
  }
  fileType:{$INTERPRO_TEST_FILE}
  syntax:$XML_SYNTAX
]

$DF_INTERPRO_TEST_1=$SrsField:["abstract" short:'abstr']
#$DF_INTERPRO_TEST_2=$SrsField:["author_list" short:'????']
#$DF_INTERPRO_TEST_3=$SrsField:["book_title" short:'????']
#$DF_INTERPRO_TEST_4=$SrsField:["category" short:'????']
#$DF_INTERPRO_TEST_5_1=$SrsField:["cite_idref" short:'????']
#$DF_INTERPRO_TEST_6_1=$SrsField:["classification_id" short:'????']
#$DF_INTERPRO_TEST_6_2=$SrsField:["classification_class_type" short:'????']
#$DF_INTERPRO_TEST_7_1=$SrsField:["db_info_name" short:'????']
#$DF_INTERPRO_TEST_7_2=$SrsField:["db_info_version" short:'????']
#$DF_INTERPRO_TEST_7_3=$SrsField:["db_info_file_date" short:'????']
#$DF_INTERPRO_TEST_7_4=$SrsField:["db_info_entry_count" short:'????']
#$DF_INTERPRO_TEST_8_1=$SrsField:["db_xref_db" short:'????']
#$DF_INTERPRO_TEST_8_2=$SrsField:["db_xref_version" short:'????']
#$DF_INTERPRO_TEST_8_3=$SrsField:["db_xref_dbkey" short:'????']
#$DF_INTERPRO_TEST_8_4=$SrsField:["db_xref_name" short:'????']
#$DF_INTERPRO_TEST_9_1=$SrsField:["del_ref_id" short:'????']
#$DF_INTERPRO_TEST_10=$SrsField:["description" short:'????']
#$DF_INTERPRO_TEST_11=$SrsField:["example" short:'????']
#$DF_INTERPRO_TEST_12_1=$SrsField:["interpro_id" short:'????']
$DF_INTERPRO_TEST_12_2=$SrsField:["interpro_type" short:'type']
#$DF_INTERPRO_TEST_12_3=$SrsField:["interpro_short_name" short:'????']
#$DF_INTERPRO_TEST_13=$SrsField:["journal" short:'????']
#$DF_INTERPRO_TEST_14_1=$SrsField:["location_firstpage" short:'????']
#$DF_INTERPRO_TEST_14_2=$SrsField:["location_lastpage" short:'????']
#$DF_INTERPRO_TEST_14_3=$SrsField:["location_volume" short:'????']
#$DF_INTERPRO_TEST_14_4=$SrsField:["location_issue" short:'????']
$DF_INTERPRO_TEST_15=$SrsField:["name" short:'name']
#$DF_INTERPRO_TEST_16_1=$SrsField:["protein_id" short:'????']
#$DF_INTERPRO_TEST_17_1=$SrsField:["publication_id" short:'????']
#$DF_INTERPRO_TEST_18_1=$SrsField:["book_info_english_language" short:'????']
#$DF_INTERPRO_TEST_18_2=$SrsField:["book_info_availability" short:'????']
#$DF_INTERPRO_TEST_19=$SrsField:["publisher" short:'????']
#$DF_INTERPRO_TEST_20=$SrsField:["isbn" short:'????']
#$DF_INTERPRO_TEST_21=$SrsField:["reaction" short:'????']
#$DF_INTERPRO_TEST_22_1=$SrsField:["rel_ref_ipr_ref" short:'????']
#$DF_INTERPRO_TEST_22_2=$SrsField:["rel_ref_type" short:'????']
#$DF_INTERPRO_TEST_23_1=$SrsField:["sec_ac_acc" short:'????']
#$DF_INTERPRO_TEST_24=$SrsField:["taxon" short:'????']
#$DF_INTERPRO_TEST_24_1=$SrsField:["taxon_tax_id" short:'????']
#$DF_INTERPRO_TEST_25=$SrsField:["title" short:'????']
#$DF_INTERPRO_TEST_26=$SrsField:["type" short:'????']
#$DF_INTERPRO_TEST_27=$SrsField:["url" short:'????']
#$DF_INTERPRO_TEST_28=$SrsField:["year" short:'????']

#
# The XML "INTERPRO_TEST" databank file descriptor.
#

$INTERPRO_TEST_FILE=$FileType:[xml
  typeName:xml
  maxline:1024
  fieldTokens:entry
  fipVar:entryFip
]

#
# The index metaphors used to index the data of the XML "INTERPRO_TEST"
# databank.
#
# NOTES:
# 1. Generated automatically by the DTD-to-Icarus translator.
# 2. When modified, invoke the "srssection" command to commit
#    the modifications into the SRS system.
# 3. If missing, remember to add the "indexField:$DF_ID"
#    specification within the index metaphor for the element
#    or attribute carrying the XML "INTERPRO_TEST"
#    databank entry ID.
#

$OIM_INTERPRO_TEST_1=$ObjIndexMetaphor:[className:"abstract"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_1
]

#$OIM_INTERPRO_TEST_2=$ObjIndexMetaphor:[className:"author_list"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_2
#]

#$OIM_INTERPRO_TEST_3=$ObjIndexMetaphor:[className:"book_title"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_3
#]

#$OIM_INTERPRO_TEST_4=$ObjIndexMetaphor:[className:"category"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_4
#]

#$OIM_INTERPRO_TEST_5=$ObjIndexMetaphor:[className:"cite"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"idref"
#                       indexField:$DF_INTERPRO_TEST_5_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_6=$ObjIndexMetaphor:[className:"classification"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_6_1
#    ]
#    $AttrIndexMetaphor:[attrName:"class_type"
#                       indexField:$DF_INTERPRO_TEST_6_2
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_7=$ObjIndexMetaphor:[className:"db_info"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"name"
#                       indexField:$DF_INTERPRO_TEST_7_1
#    ]
#    $AttrIndexMetaphor:[attrName:"version"
#                       indexField:$DF_INTERPRO_TEST_7_2
#    ]
#    $AttrIndexMetaphor:[attrName:"file_date"
#                       indexField:$DF_INTERPRO_TEST_7_3
#    ]
#    $AttrIndexMetaphor:[attrName:"entry_count"
#                       indexField:$DF_INTERPRO_TEST_7_4
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_8=$ObjIndexMetaphor:[className:"db_xref"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"db"
#                       indexField:$DF_INTERPRO_TEST_8_1
#    ]
#    $AttrIndexMetaphor:[attrName:"version"
#                       indexField:$DF_INTERPRO_TEST_8_2
#    ]
#    $AttrIndexMetaphor:[attrName:"dbkey"
#                       indexField:$DF_INTERPRO_TEST_8_3
#    ]
#    $AttrIndexMetaphor:[attrName:"name"
#                       indexField:$DF_INTERPRO_TEST_8_4
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_9=$ObjIndexMetaphor:[className:"del_ref"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_9_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_10=$ObjIndexMetaphor:[className:"description"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_10
#]

#$OIM_INTERPRO_TEST_11=$ObjIndexMetaphor:[className:"example"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_11
#]

$OIM_INTERPRO_TEST_12=$ObjIndexMetaphor:[className:"interpro"
  nameSpace:$INTERPRO_TEST_DB
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"id"
                       indexField:$DF_ID
    ]
    $AttrIndexMetaphor:[attrName:"type"
                       indexField:$DF_INTERPRO_TEST_12_2
    ]
#    $AttrIndexMetaphor:[attrName:"short_name"
#                       indexField:$DF_INTERPRO_TEST_12_3
#    ]
  }
]

#$OIM_INTERPRO_TEST_13=$ObjIndexMetaphor:[className:"journal"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_13
#]

#$OIM_INTERPRO_TEST_14=$ObjIndexMetaphor:[className:"location"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"firstpage"
#                       indexField:$DF_INTERPRO_TEST_14_1
#    ]
#    $AttrIndexMetaphor:[attrName:"lastpage"
#                       indexField:$DF_INTERPRO_TEST_14_2
#    ]
#    $AttrIndexMetaphor:[attrName:"volume"
#                       indexField:$DF_INTERPRO_TEST_14_3
#    ]
#    $AttrIndexMetaphor:[attrName:"issue"
#                       indexField:$DF_INTERPRO_TEST_14_4
#    ]
#  }
#]

$OIM_INTERPRO_TEST_15=$ObjIndexMetaphor:[className:"name"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_15
]

#$OIM_INTERPRO_TEST_16=$ObjIndexMetaphor:[className:"protein"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_16_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_17=$ObjIndexMetaphor:[className:"publication"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_17_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_18=$ObjIndexMetaphor:[className:"book_info"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"english_language"
#                       indexField:$DF_INTERPRO_TEST_18_1
#    ]
#    $AttrIndexMetaphor:[attrName:"availability"
#                       indexField:$DF_INTERPRO_TEST_18_2
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_19=$ObjIndexMetaphor:[className:"publisher"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_19
#]

#$OIM_INTERPRO_TEST_20=$ObjIndexMetaphor:[className:"isbn"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_20
#]

#$OIM_INTERPRO_TEST_21=$ObjIndexMetaphor:[className:"reaction"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_21
#]

#$OIM_INTERPRO_TEST_22=$ObjIndexMetaphor:[className:"rel_ref"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"ipr_ref"
#                       indexField:$DF_INTERPRO_TEST_22_1
#    ]
#    $AttrIndexMetaphor:[attrName:"type"
#                       indexField:$DF_INTERPRO_TEST_22_2
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_23=$ObjIndexMetaphor:[className:"sec_ac"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"acc"
#                       indexField:$DF_INTERPRO_TEST_23_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_24=$ObjIndexMetaphor:[className:"taxon"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_24
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"tax_id"
#                       indexField:$DF_INTERPRO_TEST_24_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_25=$ObjIndexMetaphor:[className:"title"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_25
#]

#$OIM_INTERPRO_TEST_26=$ObjIndexMetaphor:[className:"type"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_26
#]

#$OIM_INTERPRO_TEST_27=$ObjIndexMetaphor:[className:"url"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_27
#]

#$OIM_INTERPRO_TEST_28=$ObjIndexMetaphor:[className:"year"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_28
#]

#
# The XML "INTERPRO_TEST" databank default attribute values. DO NOT TOUCH!
#

$INTERPRO_TEST_AllAttributeValues={
  'cite'{
    'idref'''
  }
  'classification'{
    'id'''
    'class_type'''
  }
  'db_info'{
    'name'''
    'version'''
    'file_date'''
    'entry_count'''
  }
  'db_xref'{
    'db'''
    'version'''
    'dbkey'''
    'name'''
  }
  'del_ref'{
    'id'''
  }
  'interpro'{
    'id'''
    'type'''
    'short_name'''
  }
  'location'{
    'firstpage'''
    'lastpage'''
    'volume'''
    'issue'''
  }
  'protein'{
    'id'''
  }
  'publication'{
    'id'''
  }
  'book_info'{
    'english_language''yes'
    'availability''publisher'
  }
  'rel_ref'{
    'ipr_ref'''
    'type'''
  }
  'sec_ac'{
    'acc'''
  }
  'taxon'{
    'tax_id'''
  }
}

#
# The XML "INTERPRO_TEST" databank general parsed entities. DO NOT TOUCH!
#

$INTERPRO_TEST_GeneralParsedEntities={
  'pub''publisher'
  'ol''on-line'
  'dlib''domestic_library'
  'flib''foreign_library'
  'oop''out_of_print'
  'ea''et al.'
}

#
# The XML "INTERPRO_TEST" databank child element list. DO NOT TOUCH!
#

$INTERPRO_TEST_ChildElementList={
  'abstract'{
    'cite'''
    'taxon'''
    'db_xref'''
    'reaction'''
  }
  'author_list'{}
  'book_title'{}
  'category'{}
  'child_list'{
    'rel_ref'''
  }
  'cite'{}
  'class_list'{
    'classification'''
  }
  'classification'{
    'category'''
    'description'''
  }
  'contains'{
    'rel_ref'''
  }
  'db_info'{}
  'db_xref'{}
  'del_ref'{
    'description'''
  }
  'deleted_entries'{
    'del_ref'''
  }
  'description'{}
  'example'{
    'cite'''
    'db_xref'''
  }
  'example_list'{
    'example'''
  }
  'external_doc_list'{
    'db_xref'''
  }
  'found_in'{
    'rel_ref'''
  }
  'interpro'{
    'name'''
    'sec_list'''
    'abstract'''
    'class_list'''
    'example_list'''
    'pub_list'''
    'contains'''
    'external_doc_list'''
    'member_list'''
    'parent_list'''
    'child_list'''
    'found_in'''
  }
  'interprodb'{
    'release'''
    'interpro'''
  }
  'journal'{}
  'location'{}
  'member_list'{
    'db_xref'''
  }
  'name'{}
  'parent_list'{
    'rel_ref'''
  }
  'protein'{}
  'pub_list'{
    'publication'''
  }
  'publication'{
    'author_list'''
    'title'''
    'db_xref'''
    'journal'''
    'book_title'''
    'book_info'''
    'location'''
    'year'''
    'url'''
  }
  'book_info'{
    'abstract'''
    'publisher'''
    'isbn'''
  }
  'publisher'{}
  'isbn'{}
  'reaction'{}
  'rel_ref'{}
  'release'{
    'db_info'''
  }
  'sec_ac'{}
  'sec_list'{
    'sec_ac'''
  }
  'taxon'{}
  'title'{}
  'type'{}
  'url'{}
  'year'{}
}
Example II.4 interpro_test_.i

#
# The Icarus base representation for the XML "INTERPRO_TEST" databank.
#
# NOTES:
# 1. Generated automatically by the DTD-to-Icarus translator.
# 2. To be edited at least to supply:
#    a) the XML "INTERPRO_TEST" databank entry element type
#       (attribute "xmlEntryElementType", class "$Library");
#    b) the XML "INTERPRO_TEST" databank field short names
#       (attribute "short", class "$SrsField");
#    c) if missing, the "indexField:$DF_ID" specification within
#       the index metaphor either for the object or for the attribute
#       carrying the XML "INTERPRO_TEST" databank entry ID.
# 3. Remember to edit the $SRSSITE/srsdb.i file to:
#    a) include this file;
#    b) specify the XML "INTERPRO_TEST" databank location;
#    c) specify the XML "INTERPRO_TEST" databank ID;
#    and then invoke the "srssection" command in order to make
#    the XML "INTERPRO_TEST" databank available into the SRS system.
#

$INTERPRO_TEST_DB=$Library:[INTERPRO_TEST group:$XML_LIBS
  dataSource:xml
# Uncomment only one of the two defaultEntryView attributes below.
# This defaultEntryView attribute gives an unformatted entry view.
#  defaultEntryView:$Entries_View
# This defaultEntryView attribute uses an Icarus layout (.il) file
# to generate a nicely formatted entry view.
  defaultEntryView:$INTERPRO_TEST_ENTRY_VIEW
  format:$INTERPRO_TEST_FORMAT
  xmlEntryElementType:'interpro'
  searchName:'interpro_test.xml'
# To activate multiple file processing, comment out the line above
# and uncomment the following two lines.
#  searchName:'*.xml'
#  parallelType:Files
  subEntries:{$INTERPRO_TEST_EXAMPLES_DB $INTERPRO_TEST_PUBLICATIONS_DB}
  xmlSubentryPolicy:makeNew
]

# EXAMPLES subentry library.
$INTERPRO_TEST_EXAMPLES_DB=$Library:[INTERPRO_TEST_EXAMPLES
  parent:$INTERPRO_TEST_DB
  dataSource:xml
  format:$INTERPRO_TEST_EXAMPLES_FORMAT
  xmlEntryElementType:'example'
]

# PUBLICATIONS subentry library.
$INTERPRO_TEST_PUBLICATIONS_DB=$Library:[INTERPRO_TEST_PUBLICATIONS
  parent:$INTERPRO_TEST_DB
  dataSource:xml
  format:$INTERPRO_TEST_PUBLICATIONS_FORMAT
  xmlEntryElementType:'publication'
  xmlSubentryPolicy:makeNew
]

#
# The default table view.
#

$INTERPRO_TEST_VIEW=$View:[INTERPRO_TEST_VIEW
  objLoader:$INTERPRO_TEST_LOADER
#  printEntryList:n
#  type:entry
#  layout:@{
#    $FileDo:"($Env:SRSSITE)/interpro_test.il"
#  }
]

#
# The single entry view.
#

$INTERPRO_TEST_ENTRY_VIEW=$View:[INTERPRO_TEST_ENTRY_VIEW
  objLoader:$INTERPRO_TEST_LOADER
  printEntryList:n
  type:entry
  layout:@{
    $FileDo:"($Env:SRSDEMO)/interpro_test.il"
  }
]

#################################################
# The XML "INTERPRO_TEST" databank flat loader. #
#################################################

#
# The "INTERPRO_TEST" main loader.
#
$INTERPRO_TEST_LOADER=$LoadClass:[INTERPRO_TEST_LOADER
  libs:{$INTERPRO_TEST_DB}
  attrs:{
# The following $LoadAttr objects were added to demonstrate the
# enhanced loadPath syntax.
# $LoadAttr object added for demonstrating indexing of a single
# source field into multiple target fields using an indexField list.
    $LoadAttr:["interpro_id" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_1]}]

# $LoadAttr objects added for demonstrating special path syntax.
#      absolute path: '/interpro/abstract/cite/@idref'
#      relative path: '//abstract/cite/@idref'
#      illegal path:  '////interpro//abstract///cite/@idref'
#      single element path: 'cite/@idref'
    $LoadAttr:["absolute_path" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_ABSOLUTE_PATH]}]
    $LoadAttr:["relative_path" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_RELATIVE_PATH]}]
    $LoadAttr:["illegal_path" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_ILLEGAL_PATH]}]
    $LoadAttr:["single_element_path" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_SINGLE_ELEMENT_PATH]}]

# $LoadAttr objects added for demonstrating conditional indexing.
    $LoadAttr:["shortname_domain" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3_Domain]}]
    $LoadAttr:["shortname_family" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3_Family]}]

# $LoadAttr objects added for demonstrating loadPath list syntax.
    $LoadAttr:["mixed_list_1" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_MIXED_LIST_1]}]
    $LoadAttr:["mixed_list_2" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_MIXED_LIST_2]}]

# $LoadAttr objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
    $LoadAttr:["copy_of_abstract" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_1_COPY_OF]}]
    $LoadAttr:["value_of_abstract" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_1_VALUE_OF]}]

# "Regular" $LoadAttr objects generated automatically by dtd2ica.
    $LoadAttr:["abstract" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_1]}]
    $LoadAttr:["cite_idref" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_5_1]}]
    $LoadAttr:["db_xref_db" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1]}]
    $LoadAttr:["db_xref_dbkey" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3]}]
    $LoadAttr:["interpro_type" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_2]}]
    $LoadAttr:["name" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_15]}]
    $LoadAttr:["reaction" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_21]}]
    $LoadAttr:["taxon" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_24]}]
    $LoadAttr:["taxon_tax_id" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_24_1]}]

# $LoadAttr composition loader objects for the subentry libraries.
    $LoadAttr:["PUBLICATIONS"
               type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_PUBLICATIONS_LOADER]}]
    $LoadAttr:["EXAMPLES"
               type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_EXAMPLES_LOADER]}]

# $LoadAttr object added for demonstrating the wholeEntry token.
    $LoadAttr:[WholeEntry type:string load:{$Tok:[wholeEntry:y]}]
  }
]

#
# The "INTERPRO_TEST_EXAMPLES" subentry loader.
#

$INTERPRO_TEST_EXAMPLES_LOADER=$LoadClass:[INTERPRO_TEST_EXAMPLES_LOADER
  libs:{$INTERPRO_TEST_EXAMPLES_DB}
  tin:example
  attrs:{
    $LoadAttr:["example" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_11]}]

# New db_xref fields were added to support separate indexing and
# loading for the EXAMPLES and PUBLICATIONS subentry libraries.
    $LoadAttr:["db_xref_db_exa" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1_EXAMPLES]}]
    $LoadAttr:["db_xref_dbkey_exa" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3_EXAMPLES]}]
  }
]

#
# The "INTERPRO_TEST_PUBLICATIONS" subentry loader.
#

$INTERPRO_TEST_PUBLICATIONS_LOADER=$LoadClass:[INTERPRO_TEST_PUBLICATIONS_LOADER
  libs:{$INTERPRO_TEST_PUBLICATIONS_DB}
  tin:publication
  attrs:{

# The following $LoadAttr objects were added to demonstrate the
# enhanced loadPath syntax.
# $LoadAttr object added for demonstrating deprecated loadPath syntax.
    $LoadAttr:["deprecated_syntax_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_DEPRECATED_SYNTAX]}]

# $LoadAttr object added for demonstrating loadPath list syntax.
    $LoadAttr:["attribute_list_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_ATTRIBUTE_LIST]}]

# $LoadAttr object added for demonstrating special loadPath target syntax ('@*' '*').
    $LoadAttr:["all_attributes_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_ALL_ATTRIBUTES]}]
    $LoadAttr:["all_child_elements_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS]}]

# $LoadAttr objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
    $LoadAttr:["copy-of_book_info" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_COPY_OF]}]
    $LoadAttr:["value-of_book_info" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_VALUE_OF]}]

# New abstract, cite, and db_xref fields were added to support separate 
# indexing and loading for the EXAMPLES and PUBLICATIONS subentry libraries.
    $LoadAttr:["abstract_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_1_PUBLICATIONS]}]
    $LoadAttr:["cite_idref_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_5_1_PUBLICATIONS]}]
    $LoadAttr:["db_xref_db_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1_PUBLICATIONS]}]
    $LoadAttr:["db_xref_dbkey_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3_PUBLICATIONS]}]

# "Regular" $LoadAttr objects generated automatically by dtd2ica.
    $LoadAttr:["author_list" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_2]}]
    $LoadAttr:["book_title" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_3]}]
    $LoadAttr:["journal" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_13]}]
    $LoadAttr:["location_firstpage" type:int card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_14_1]}]
    $LoadAttr:["location_lastpage" type:int card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_14_2]}]
    $LoadAttr:["location_volume" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_14_3]}]
    $LoadAttr:["location_issue" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_14_4]}]
    $LoadAttr:["publication_id" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_17_1]}]
    $LoadAttr:["book_info_english_language" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_18_1]}]
    $LoadAttr:["book_info_availability" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_18_2]}]
    $LoadAttr:["publisher" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_19]}]
    $LoadAttr:["isbn" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_20]}]
    $LoadAttr:["title" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_25]}]
    $LoadAttr:["url" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_27]}]
    $LoadAttr:["year" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_28]}]
# To demonstrate loading of sub-subentries, uncomment the following
# two lines. If this sub-subentry loader is used, it will cause the
# HTML table view to become unsynchronized.
#    $LoadAttr:[REL_REFS type:object card:multi
#load:$Tok:[loader:$INTERPRO_TEST_PUBLICATIONS_RELREFS_LOADER]]
  }
]

#
# The "INTERPRO_TEST_PUBLICATIONS_RELREFS" subentry loader.
#

$INTERPRO_TEST_PUBLICATIONS_RELREFS_LOADER=$LoadClass:[
  INTERPRO_TEST_PUBLICATIONS_RELREFS_LOADER
  libs:{$INTERPRO_TEST_PUBLICATIONS_DB}
  tin:rel_ref
  attrs:{
    $LoadAttr:[rel_ref_ipr_ref type:string
               load:{$Tok:[field:$DF_INTERPRO_TEST_22_1_PUBLICATIONS]}]
  }
]

# "Leftover" $LoadAttr objects.
#    $LoadAttr:["category" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_4]}]
#    $LoadAttr:["classification_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_1]}]
#    $LoadAttr:["classification_class_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_2]}]
#    $LoadAttr:["db_info_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_1]}]
#    $LoadAttr:["db_info_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_2]}]
#    $LoadAttr:["db_info_file_date" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_3]}]
#    $LoadAttr:["db_info_entry_count" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_4]}]
#    $LoadAttr:["db_xref_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_2]}]
#    $LoadAttr:["db_xref_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_4]}]
#    $LoadAttr:["del_ref_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_9_1]}]
#    $LoadAttr:["description" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_10]}]
#    $LoadAttr:["interpro_short_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3]}]
#    $LoadAttr:["protein_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_16_1]}]
#    $LoadAttr:["rel_ref_ipr_ref" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_22_1]}]
#    $LoadAttr:["rel_ref_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_22_2]}]
#    $LoadAttr:["sec_ac_acc" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_23_1]}]
#    $LoadAttr:["type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_26]}]



#########################################################################
# The components of the XML "INTERPRO_TEST" databank structured loader. #
#########################################################################

# The original abstract loader generated by dtd2ica.
$INTERPRO_TEST_LOADER_abstract=$LoadClass:["INTERPRO_TEST_LOADER_abstract"
  libs:{$INTERPRO_TEST_DB}
  tin:"abstract"
  attrs:{
    $LoadAttr:["abstract" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_1]}]
    $LoadAttr:["cite" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_cite]}]
    $LoadAttr:["taxon" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_taxon]}]
    $LoadAttr:["db_xref" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_xref]}]
    $LoadAttr:["reaction" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_reaction]}]
  }
]

# A new loader for abstract elements belonging to book_info elements.
$INTERPRO_TEST_LOADER_abstract_PUBLICATIONS=$LoadClass:[
  "INTERPRO_TEST_LOADER_abstract_PUBLICATIONS"
  libs:{$INTERPRO_TEST_DB}
  tin:"abstract"
  attrs:{
    $LoadAttr:["abstract_pub" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_1_PUBLICATIONS]}]
    $LoadAttr:["cite_pub" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_cite_PUBLICATIONS]}]
  }
]

$INTERPRO_TEST_LOADER_author_list=$LoadClass:["INTERPRO_TEST_LOADER_author_list"
  libs:{$INTERPRO_TEST_DB}
  tin:"author_list"
  attrs:{
    $LoadAttr:["author_list" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_2]}]
  }
]

$INTERPRO_TEST_LOADER_book_title=$LoadClass:["INTERPRO_TEST_LOADER_book_title"
  libs:{$INTERPRO_TEST_DB}
  tin:"book_title"
  attrs:{
    $LoadAttr:["book_title" type:string card:multi
load:{$Tok:[field:$DF_INTERPRO_TEST_3]}]
  }
]

#$INTERPRO_TEST_LOADER_category=$LoadClass:["INTERPRO_TEST_LOADER_category"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"category"
#  attrs:{
#    $LoadAttr:["category" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_4]}]
#  }
#]

#$INTERPRO_TEST_LOADER_child_list=$LoadClass:["INTERPRO_TEST_LOADER_child_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"child_list"
#  attrs:{
#    $LoadAttr:["rel_ref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_rel_ref]}]
#  }
#]

# Original loader for cite/@idref attributes belonging to abstract elements.
$INTERPRO_TEST_LOADER_cite=$LoadClass:["INTERPRO_TEST_LOADER_cite"
  libs:{$INTERPRO_TEST_DB}
  tin:"cite"
  attrs:{
    $LoadAttr:["cite_idref" type:string card:multi
 load:{$Tok:[field:$DF_INTERPRO_TEST_5_1]}]
  }
]

# Special loader for cite/@idref attributes belonging to book_info elements.
$INTERPRO_TEST_LOADER_cite_PUBLICATIONS=$LoadClass:[
  "INTERPRO_TEST_LOADER_cite_PUBLICATIONS"
  libs:{$INTERPRO_TEST_DB}
  tin:"cite"
  attrs:{
    $LoadAttr:["cite_idref_pub" type:string card:multi
 load:{$Tok:[field:$DF_INTERPRO_TEST_5_1_PUBLICATIONS]}]
  }
]

#$INTERPRO_TEST_LOADER_class_list=$LoadClass:["INTERPRO_TEST_LOADER_class_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"class_list"
#  attrs:{
#    $LoadAttr:["classification" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_classification]}]
#  }
#]

#$INTERPRO_TEST_LOADER_classification=$LoadClass:["INTERPRO_TEST_LOADER_classification"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"classification"
#  attrs:{
#    $LoadAttr:["classification_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_1]}]
#    $LoadAttr:["classification_class_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_6_2]}]
#    $LoadAttr:["category" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_category]}]
#    $LoadAttr:["description" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_description]}]
#  }
#]

#$INTERPRO_TEST_LOADER_contains=$LoadClass:["INTERPRO_TEST_LOADER_contains"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"contains"
#  attrs:{
#    $LoadAttr:["rel_ref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_rel_ref]}]
#  }
#]

#$INTERPRO_TEST_LOADER_db_info=$LoadClass:["INTERPRO_TEST_LOADER_db_info"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"db_info"
#  attrs:{
#    $LoadAttr:["db_info_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_1]}]
#    $LoadAttr:["db_info_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_2]}]
#    $LoadAttr:["db_info_file_date" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_3]}]
#    $LoadAttr:["db_info_entry_count" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_7_4]}]
#  }
#]

# Original db_xref loader generated by dtd2ica.
$INTERPRO_TEST_LOADER_db_xref=$LoadClass:["INTERPRO_TEST_LOADER_db_xref"
  libs:{$INTERPRO_TEST_DB}
  tin:"db_xref"
  attrs:{
    $LoadAttr:["db_xref_db" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1]}]
    $LoadAttr:["db_xref_dbkey" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3]}]
#    $LoadAttr:["db_xref_version" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_2]}]
#    $LoadAttr:["db_xref_name" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_8_4]}]
  }
]

# New loader for db_xref elements belonging to example elements.
$INTERPRO_TEST_LOADER_db_xref_EXAMPLES=$LoadClass:[INTERPRO_TEST_LOADER_db_xref_EXAMPLES
  libs:{$INTERPRO_TEST_DB}
  tin:"db_xref"
  attrs:{
# New db_xref fields were added to support separate indexing
# and loading for the EXAMPLES subentry library.
    $LoadAttr:["db_xref_db_exa" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1_EXAMPLES]}]
    $LoadAttr:["db_xref_dbkey_exa" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3_EXAMPLES]}]
  }
]

# New loader for db_xref elements belonging to publication elements.
$INTERPRO_TEST_LOADER_db_xref_PUBLICATIONS=$LoadClass:[
  INTERPRO_TEST_LOADER_db_xref_PUBLICATIONS
  libs:{$INTERPRO_TEST_DB}
  tin:"db_xref"
  attrs:{
# New db_xref fields were added to support separate indexing
# and loading for the PUBLICATIONS subentry library.
    $LoadAttr:["db_xref_db_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_1_PUBLICATIONS]}]
    $LoadAttr:["db_xref_dbkey_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_8_3_PUBLICATIONS]}]
  }
]

#$INTERPRO_TEST_LOADER_del_ref=$LoadClass:["INTERPRO_TEST_LOADER_del_ref"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"del_ref"
#  attrs:{
#    $LoadAttr:["del_ref_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_9_1]}]
#    $LoadAttr:["description" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_description]}]
#  }
#]

#$INTERPRO_TEST_LOADER_deleted_entries=$LoadClass:["INTERPRO_TEST_LOADER_deleted_entries"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"deleted_entries"
#  attrs:{
#    $LoadAttr:["del_ref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_del_ref]}]
#  }
#]

#$INTERPRO_TEST_LOADER_description=$LoadClass:["INTERPRO_TEST_LOADER_description"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"description"
#  attrs:{
#    $LoadAttr:["description" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_10]}]
#  }
#]

$INTERPRO_TEST_LOADER_example=$LoadClass:["INTERPRO_TEST_LOADER_example"
# The value of the libs attribute was changed to enable this 
# structured loader to be used for loading EXAMPLES subentries.
  libs:{$INTERPRO_TEST_EXAMPLES_DB}
  tin:"example"
  attrs:{
    $LoadAttr:["example" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_11]}]
#    $LoadAttr:["cite" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_cite]}]

# A new db_xref loader was added to support separate
# loading for the EXAMPLES subentry.
    $LoadAttr:["db_xref_exa" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_xref_EXAMPLES]}]
  }
]

#$INTERPRO_TEST_LOADER_example_list=$LoadClass:["INTERPRO_TEST_LOADER_example_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"example_list"
#  attrs:{
#    $LoadAttr:["example" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_example]}]
#  }
#]

#$INTERPRO_TEST_LOADER_external_doc_list=$LoadClass:[
  "INTERPRO_TEST_LOADER_external_doc_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"external_doc_list"
#  attrs:{
#    $LoadAttr:["db_xref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_xref]}]
#  }
#]

#$INTERPRO_TEST_LOADER_found_in=$LoadClass:["INTERPRO_TEST_LOADER_found_in"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"found_in"
#  attrs:{
#    $LoadAttr:["rel_ref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_rel_ref]}]
#  }
#]

$INTERPRO_TEST_LOADER_interpro=$LoadClass:["INTERPRO_TEST_LOADER_interpro"
  libs:{$INTERPRO_TEST_DB}
  tin:"interpro"
  attrs:{
    $LoadAttr:["interpro_id" type:string card:mono
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_1]}]

# $LoadAttr objects added for demonstrating conditional indexing.
    $LoadAttr:["shortname_domain" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3_Domain]}]
    $LoadAttr:["shortname_family" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_3_Family]}]

# "Regular" $LoadAttr objects generated automatically by dtd2ica.
    $LoadAttr:["interpro_type" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_12_2]}]
    $LoadAttr:["abstract" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_abstract]}]
    $LoadAttr:["name" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_name]}]

#    $LoadAttr:["sec_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_sec_list]}]
#    $LoadAttr:["class_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_class_list]}]
#    $LoadAttr:["example_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_example_list]}]
#    $LoadAttr:["pub_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_pub_list]}]
#    $LoadAttr:["external_doc_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_external_doc_list]}]
#    $LoadAttr:["member_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_member_list]}]
#    $LoadAttr:["parent_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_parent_list]}]
#    $LoadAttr:["child_list" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_child_list]}]
#    $LoadAttr:["contains" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_contains]}]
#    $LoadAttr:["found_in" type:object card:multi
#load:{$Tok:[loader:$INTERPRO_TEST_LOADER_found_in]}]

# $LoadAttr composition loader objects added to "skip over" the 
# example_list and pub_list structure-only elements.
    $LoadAttr:["example" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_example]}]
    $LoadAttr:["publication" type:object card:multi
load:{$Tok:[loader:$INTERPRO_TEST_LOADER_publication]}]
  }
]

#$INTERPRO_TEST_LOADER_interprodb=$LoadClass:["INTERPRO_TEST_LOADER_interprodb"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"interprodb"
#  attrs:{
#    $LoadAttr:["release" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_release]}]
#    $LoadAttr:["interpro" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_interpro]}]
#  }
#]

$INTERPRO_TEST_LOADER_journal=$LoadClass:["INTERPRO_TEST_LOADER_journal"
  libs:{$INTERPRO_TEST_DB}

  tin:"journal"
  attrs:{
    $LoadAttr:["journal" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_13]}]
  }
]

$INTERPRO_TEST_LOADER_location=$LoadClass:["INTERPRO_TEST_LOADER_location"
  libs:{$INTERPRO_TEST_DB}
  tin:"location"
  attrs:{
    $LoadAttr:["location_firstpage" type:int card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_14_1]}]
    $LoadAttr:["location_lastpage" type:int card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_14_2]}]
    $LoadAttr:["location_volume" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_14_3]}]
    $LoadAttr:["location_issue" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_14_4]}]
  }
]

#$INTERPRO_TEST_LOADER_member_list=$LoadClass:["INTERPRO_TEST_LOADER_member_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"member_list"
#  attrs:{
#    $LoadAttr:["db_xref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_xref]}]
#  }
#]

$INTERPRO_TEST_LOADER_name=$LoadClass:["INTERPRO_TEST_LOADER_name"
  libs:{$INTERPRO_TEST_DB}
  tin:"name"
  attrs:{
    $LoadAttr:["name" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_15]}]
  }
]

#$INTERPRO_TEST_LOADER_parent_list=$LoadClass:["INTERPRO_TEST_LOADER_parent_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"parent_list"
#  attrs:{
#    $LoadAttr:["rel_ref" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_rel_ref]}]
#  }
#]

#$INTERPRO_TEST_LOADER_protein=$LoadClass:["INTERPRO_TEST_LOADER_protein"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"protein"
#  attrs:{
#    $LoadAttr:["protein_id" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_16_1]}]
#  }
#]

#$INTERPRO_TEST_LOADER_pub_list=$LoadClass:["INTERPRO_TEST_LOADER_pub_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"pub_list"
#  attrs:{
#    $LoadAttr:["publication" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_publication]}]
#  }
#]

$INTERPRO_TEST_LOADER_publication=$LoadClass:["INTERPRO_TEST_LOADER_publication"
# The value of the libs attribute was changed to enable this 
# structured loader to be used for loading PUBLICATIONS subentries.
  libs:{$INTERPRO_TEST_PUBLICATIONS_DB}
  tin:"publication"
  attrs:{
    $LoadAttr:["publication_id" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_17_1]}]
    $LoadAttr:["author_list" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_author_list]}]
    $LoadAttr:["title" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_title]}]

# A new db_xref loader was added to support separate
# loading for the PUBLICATIONS subentry.
    $LoadAttr:["db_xref_pub" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_xref_PUBLICATIONS]}]

    $LoadAttr:["journal" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_journal]}]
    $LoadAttr:["book_title" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_book_title]}]

# $LoadAttr object added for demonstrating the all elements (*) loadPath syntax.
    $LoadAttr:["all_child_elements_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS]}]

    $LoadAttr:["book_info" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_book_info]}]
    $LoadAttr:["location" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_location]}]
    $LoadAttr:["year" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_year]}]
    $LoadAttr:["url" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_url]}]

# $LoadAttr composition loader object added to "skip over" the child_list 
# structure-only element.
    $LoadAttr:["rel_ref_pub" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_rel_ref_PUBLICATIONS]}]
  }
]

$INTERPRO_TEST_LOADER_book_info=$LoadClass:["INTERPRO_TEST_LOADER_book_info"
  libs:{$INTERPRO_TEST_DB}
  tin:"book_info"
  attrs:{
# A new abstract loader was added to support separate 
# loading for the PUBLICATIONS subentry.
    $LoadAttr:["abstract_pub" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_abstract_PUBLICATIONS]}]

# $LoadAttr objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
    $LoadAttr:["copy-of_book_info" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_COPY_OF]}]
    $LoadAttr:["value-of_book_info" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_PUBLICATIONS_VALUE_OF]}]

    $LoadAttr:["publisher" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_publisher]}]
    $LoadAttr:["isbn" type:object card:multi
               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_isbn]}]
  }
]

$INTERPRO_TEST_LOADER_publisher=$LoadClass:["INTERPRO_TEST_LOADER_publisher"
  libs:{$INTERPRO_TEST_DB}
  tin:"publisher"
  attrs:{
    $LoadAttr:["publisher" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_19]}]
  }
]

$INTERPRO_TEST_LOADER_isbn=$LoadClass:["INTERPRO_TEST_LOADER_isbn"
  libs:{$INTERPRO_TEST_DB}
  tin:"isbn"
  attrs:{
    $LoadAttr:["isbn" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_20]}]
  }
]

$INTERPRO_TEST_LOADER_reaction=$LoadClass:["INTERPRO_TEST_LOADER_reaction"
  libs:{$INTERPRO_TEST_DB}
  tin:"reaction"
  attrs:{
    $LoadAttr:["reaction" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_21]}]
  }
]

$INTERPRO_TEST_LOADER_rel_ref_PUBLICATIONS=$LoadClass:[
  "INTERPRO_TEST_LOADER_rel_ref_PUBLICATIONS"
  libs:{$INTERPRO_TEST_DB}
  tin:"rel_ref"
  attrs:{
    $LoadAttr:["rel_ref_ipr_ref_pub" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_22_1_PUBLICATIONS]}]
#    $LoadAttr:["rel_ref_type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_22_2]}]
  }
]

#$INTERPRO_TEST_LOADER_release=$LoadClass:["INTERPRO_TEST_LOADER_release"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"release"
#  attrs:{
#    $LoadAttr:["db_info" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_db_info]}]
#  }
#]

#$INTERPRO_TEST_LOADER_sec_ac=$LoadClass:["INTERPRO_TEST_LOADER_sec_ac"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"sec_ac"
#  attrs:{
#    $LoadAttr:["sec_ac_acc" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_23_1]}]
#  }
#]

#$INTERPRO_TEST_LOADER_sec_list=$LoadClass:["INTERPRO_TEST_LOADER_sec_list"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"sec_list"
#  attrs:{
#    $LoadAttr:["sec_ac" type:object card:multi
#               load:{$Tok:[loader:$INTERPRO_TEST_LOADER_sec_ac]}]
#  }
#]

$INTERPRO_TEST_LOADER_taxon=$LoadClass:["INTERPRO_TEST_LOADER_taxon"
  libs:{$INTERPRO_TEST_DB}
  tin:"taxon"
  attrs:{
    $LoadAttr:["taxon" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_24]}]
    $LoadAttr:["taxon_tax_id" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_24_1]}]
  }
]

$INTERPRO_TEST_LOADER_title=$LoadClass:["INTERPRO_TEST_LOADER_title"
  libs:{$INTERPRO_TEST_DB}
  tin:"title"
  attrs:{
    $LoadAttr:["title" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_25]}]
  }
]

#$INTERPRO_TEST_LOADER_type=$LoadClass:["INTERPRO_TEST_LOADER_type"
#  libs:{$INTERPRO_TEST_DB}
#  tin:"type"
#  attrs:{
#    $LoadAttr:["type" type:string card:multi
#               load:{$Tok:[field:$DF_INTERPRO_TEST_26]}]
#  }
#]

$INTERPRO_TEST_LOADER_url=$LoadClass:["INTERPRO_TEST_LOADER_url"
  libs:{$INTERPRO_TEST_DB}
  tin:"url"
  attrs:{
    $LoadAttr:["url" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_27]}]
  }
]

$INTERPRO_TEST_LOADER_year=$LoadClass:["INTERPRO_TEST_LOADER_year"
  libs:{$INTERPRO_TEST_DB}
  tin:"year"
  attrs:{
    $LoadAttr:["year" type:string card:multi
               load:{$Tok:[field:$DF_INTERPRO_TEST_28]}]
  }
]



#
# The XML "INTERPRO_TEST" databank format.
#

$INTERPRO_TEST_FORMAT=$LibFormat:[
  fields:{
    # The following field is required, so please do not remove it.
    # Also, modify the 'loadPath' if an ID different from the one
    # retrieved automatically by SRS is required, for example
    # within views.
    $Field:[$DF_ID index:id indexToken:xml
            loadPath:"interpro/@id"]
    # All the following fields are commented out for convenience.
    # Please uncomment the ones of interest.

# $Field object added for demonstrating indexing from a single field 
# into multiple target fields using an indexField list.
    $Field:[$DF_INTERPRO_TEST_12_1
            index:str indexToken:xml loadPath:"interpro/@id"]

# The following $Field objects were added to demonstrate the
# enhanced loadPath syntax.
# $Field objects added for demonstrating special path syntax.
    $Field:[$DF_INTERPRO_TEST_ABSOLUTE_PATH
            index:str indexToken:xml loadPath:"/interpro/abstract/cite/@idref"]
    $Field:[$DF_INTERPRO_TEST_RELATIVE_PATH
            index:str indexToken:xml loadPath:"//cite/@idref"]
    $Field:[$DF_INTERPRO_TEST_ILLEGAL_PATH
            index:str indexToken:xml loadPath:"////interpro/abstract///cite//@idref"]
    $Field:[$DF_INTERPRO_TEST_SINGLE_ELEMENT_PATH
            index:str indexToken:xml loadPath:"cite/@idref"]

# $Field objects added for demonstrating conditional indexing.
    $Field:[$DF_INTERPRO_TEST_12_3_Domain
            index:str indexToken:xml loadPath:"interpro/@short_name"]
    $Field:[$DF_INTERPRO_TEST_12_3_Family
            index:str indexToken:xml loadPath:"interpro/@short_name"]

# $Field objects added for demonstrating loadPath list syntax.
    $Field:[$DF_INTERPRO_TEST_MIXED_LIST_1
            index:str indexToken:xml loadPath:"interpro/abstract
               interpro/abstract/cite/@idref   interpro/abstract/taxon
               interpro/abstract/taxon/@tax_id   interpro/abstract/db_xref/@db
               interpro/abstract/db_xref/@dbkey   interpro/abstract/reaction"]
    $Field:[$DF_INTERPRO_TEST_MIXED_LIST_2
            index:str indexToken:xml loadPath:"interpro/abstract/*
              interpro/abstract/db_xref/@*   interpro/abstract/taxon/@*
              interpro/abstract/cite/@*   interpro/abstract"]

# $Field objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
    $Field:[$DF_INTERPRO_TEST_1_COPY_OF index:str indexToken:xml
            loadPath:"/interpro/abstract/xsl:copy-of"]
    $Field:[$DF_INTERPRO_TEST_1_VALUE_OF index:str indexToken:xml
            loadPath:"/interpro/abstract/xsl:value-of"]

# "Regular" $Field objects contained in the INTERPRO master entry.
    $Field:[$DF_INTERPRO_TEST_1 index:str indexToken:xml
            loadPath:"interpro/abstract"]
    $Field:[$DF_INTERPRO_TEST_5_1 index:str indexToken:xml
            loadPath:"interpro/abstract/cite/@idref"]
    $Field:[$DF_INTERPRO_TEST_8_1 index:str indexToken:xml
            loadPath:"interpro/abstract/db_xref/@db"]
    $Field:[$DF_INTERPRO_TEST_8_3 index:str indexToken:xml
            loadPath:"interpro/abstract/db_xref/@dbkey"]
    $Field:[$DF_INTERPRO_TEST_11 index:str indexToken:xml
            loadPath:"example"]
    $Field:[$DF_INTERPRO_TEST_12_2 index:str indexToken:xml
            loadPath:"interpro/@type"]
    $Field:[$DF_INTERPRO_TEST_15 index:str indexToken:xml
            loadPath:"name"]
    $Field:[$DF_INTERPRO_TEST_21 index:str indexToken:xml
            loadPath:"reaction"]
    $Field:[$DF_INTERPRO_TEST_24 index:str indexToken:xml
            loadPath:"taxon"]
    $Field:[$DF_INTERPRO_TEST_24_1 index:str indexToken:xml
            loadPath:"taxon/@tax_id"]
  }
  fileType:{$INTERPRO_TEST_FILE}
  syntax:$XML_SYNTAX
]

# $SrsField object added for demonstrating indexing from a single field
# into multiple target fields using an indexField list.
$DF_INTERPRO_TEST_12_1=$SrsField:["interpro_id" short:'idcp']

# $SrsField objects added for demonstrating special path syntax.
$DF_INTERPRO_TEST_ABSOLUTE_PATH=$SrsField:["absolute_path" short:'abpth']
$DF_INTERPRO_TEST_RELATIVE_PATH=$SrsField:["relative_path" short:'relp']
$DF_INTERPRO_TEST_ILLEGAL_PATH=$SrsField:["illegal_path" short:'illp']
$DF_INTERPRO_TEST_SINGLE_ELEMENT_PATH=$SrsField:["single_element_path" short:'selp']

# $SrsField objects added for demonstrating conditional indexing.
$DF_INTERPRO_TEST_12_3_Domain=$SrsField:["shortname_domain" short:'sndm']
$DF_INTERPRO_TEST_12_3_Family=$SrsField:["shortname_family" short:'snfm']

# $SrsField objects added for demonstrating loadPath list syntax.
$DF_INTERPRO_TEST_MIXED_LIST_1=$SrsField:["mixed_list_1" short:'mls1']
$DF_INTERPRO_TEST_MIXED_LIST_2=$SrsField:["mixed_list_2" short:'mls2']

# $SrsField object added for demonstrating xsl:copy-of and xsl:value-of syntax.
$DF_INTERPRO_TEST_1_COPY_OF=$SrsField:["copy_of_abstract" short:'abcop']
$DF_INTERPRO_TEST_1_VALUE_OF=$SrsField:["value_of_abstract" short:'abval']

# "Regular" $SrsField objects contained in the INTERPRO master entry.
$DF_INTERPRO_TEST_1=$SrsField:["abstract" short:'abst']
$DF_INTERPRO_TEST_5_1=$SrsField:["cite_idref" short:'ctid']
$DF_INTERPRO_TEST_8_1=$SrsField:["db_xref_db" short:'xdb']
$DF_INTERPRO_TEST_8_3=$SrsField:["db_xref_dbkey" short:'xdbk']
$DF_INTERPRO_TEST_12_2=$SrsField:["interpro_type" short:'type']
$DF_INTERPRO_TEST_15=$SrsField:["name" short:'name']
$DF_INTERPRO_TEST_21=$SrsField:["reaction" short:'reac']
$DF_INTERPRO_TEST_24=$SrsField:["taxon" short:'txon']
$DF_INTERPRO_TEST_24_1=$SrsField:["taxon_tax_id" short:'txid']



#
# The "INTERPRO_TEST_EXAMPLES" subentry format.
#

$INTERPRO_TEST_EXAMPLES_FORMAT=$LibFormat:[
  syntax:$XML_SYNTAX
  tin:example
  idType:$Comment_Id
  fields:{
    $Field:[$DF_ID inherits:y]

# New db_xref fields were added to support separate indexing and
# loading for the EXAMPLES and PUBLICATIONS subentry libraries.
    $Field:[$DF_INTERPRO_TEST_8_1_EXAMPLES
     index:str indexToken:xml loadPath:"example/db_xref/@db"]
    $Field:[$DF_INTERPRO_TEST_8_3_EXAMPLES
     index:str indexToken:xml loadPath:"example/db_xref/@dbkey"]

# "Regular" $Field objects contained in the EXAMPLES subentry.
    $Field:[$DF_INTERPRO_TEST_11
     index:str indexToken:xml loadPath:"example"]
  }
]

# New db_xref fields were added to support separate indexing and
# loading for the EXAMPLES and PUBLICATIONS subentry libraries.
$DF_INTERPRO_TEST_8_1_EXAMPLES=$SrsField:["db_xref_db_exa" short:'xdbe']
$DF_INTERPRO_TEST_8_3_EXAMPLES=$SrsField:["db_xref_dbkey_exa" short:'xdke']

# "Regular" $SrsField objects contained in the EXAMPLES subentry.
$DF_INTERPRO_TEST_11=$SrsField:["example" short:'exam']



#
# The "INTERPRO_TEST_PUBLICATIONS" subentry format.
#

$INTERPRO_TEST_PUBLICATIONS_FORMAT=$LibFormat:[
  syntax:$XML_SYNTAX
  tin:publication
  idType:$Reference_Id
  fields:{
    $Field:[$DF_ID inherits:y]

# The following $Field objects were added to demonstrate the
# enhanced loadPath syntax.
# $Field object added for demonstrating deprecated loadPath syntax.
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_DEPRECATED_SYNTAX
            index:str indexToken:xml loadPath:"publication&id"]

# $Field object added for demonstrating loadPath list syntax.
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_ATTRIBUTE_LIST
            index:str indexToken:xml
            loadPath:"book_info/@english_language book_info/@availability"]

# $Field objects added for demonstrating special loadPath target syntax ('@*' '*').
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_ALL_ATTRIBUTES
            index:str indexToken:xml loadPath:"book_info/@*"]
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS
            index:str indexToken:xml loadPath:"book_info/*"]

# $Field objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_COPY_OF
            index:str indexToken:xml loadPath:"book_info/xsl:copy-of"]
    $Field:[$DF_INTERPRO_TEST_PUBLICATIONS_VALUE_OF
            index:str indexToken:xml loadPath:"book_info/xsl:value-of"]

# New abstract, cite, and db_xref fields were added to support separate indexing
# and loading for the EXAMPLES and PUBLICATIONS subentry libraries.
    $Field:[$DF_INTERPRO_TEST_1_PUBLICATIONS index:str indexToken:xml
            loadPath:"publication/book_info/abstract"]
    $Field:[$DF_INTERPRO_TEST_5_1_PUBLICATIONS index:str indexToken:xml
            loadPath:"book_info/abstract/cite/@idref"]
    $Field:[$DF_INTERPRO_TEST_8_1_PUBLICATIONS index:str indexToken:xml
            loadPath:"publication/db_xref/@db"]
    $Field:[$DF_INTERPRO_TEST_8_3_PUBLICATIONS index:str indexToken:xml
            loadPath:"publication/db_xref/@dbkey"]

# "Regular" $Field objects contained in the PUBLICATIONS subentry.
    $Field:[$DF_INTERPRO_TEST_2 index:str indexToken:xml
            loadPath:"author_list"]
    $Field:[$DF_INTERPRO_TEST_3 index:str indexToken:xml
            loadPath:"publication/book_title"]
    $Field:[$DF_INTERPRO_TEST_13 index:str indexToken:xml
            loadPath:"journal"]
    $Field:[$DF_INTERPRO_TEST_14_1 index:int indexToken:xml
            loadPath:"location/@firstpage"]
    $Field:[$DF_INTERPRO_TEST_14_2 index:int indexToken:xml
            loadPath:"location/@lastpage"]
    $Field:[$DF_INTERPRO_TEST_14_3 index:str indexToken:xml
            loadPath:"location/@volume"]
    $Field:[$DF_INTERPRO_TEST_14_4 index:str indexToken:xml
            loadPath:"location/@issue"]
    $Field:[$DF_INTERPRO_TEST_17_1 index:str indexToken:xml
            loadPath:"publication/@id"]
    $Field:[$DF_INTERPRO_TEST_18_1 index:str indexToken:xml
            loadPath:"publication/book_info/@english_language"]
    $Field:[$DF_INTERPRO_TEST_18_2 index:str indexToken:xml
            loadPath:"publication/book_info/@availability"]
    $Field:[$DF_INTERPRO_TEST_19 index:str indexToken:xml
            loadPath:"publisher"]
    $Field:[$DF_INTERPRO_TEST_20 index:str indexToken:xml
            loadPath:"isbn"]
    $Field:[$DF_INTERPRO_TEST_25 index:str indexToken:xml
            loadPath:"publication/title"]
    $Field:[$DF_INTERPRO_TEST_27 index:str indexToken:xml
            loadPath:"publication/url"]
    $Field:[$DF_INTERPRO_TEST_28 index:str indexToken:xml
            loadPath:"publication/year"]

# $Field object added for demonstrating loading of sub-subentries.
# The rel_ref field was only activated for the publications subentry library.
    $Field:[$DF_INTERPRO_TEST_22_1_PUBLICATIONS index:str indexToken:xml
            loadPath:"publication/child_list/rel_ref/@ipr_ref"]
  }
]

# $SrsField object added for demonstrating deprecated loadPath syntax.
$DF_INTERPRO_TEST_PUBLICATIONS_DEPRECATED_SYNTAX=$SrsField:[
    "deprecated_syntax_pub" short:'depcp']

# $SrsField object added for demonstrating loadPath list syntax.
$DF_INTERPRO_TEST_PUBLICATIONS_ATTRIBUTE_LIST=$SrsField:[
    "attribute_list_pub" short:'alstp']

# $SrsField objects added for demonstrating special loadPath target syntax ('@*' '*').
$DF_INTERPRO_TEST_PUBLICATIONS_ALL_ATTRIBUTES=$SrsField:[
    "all_attributes_pub" short:'alatp']
$DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS=$SrsField:[
    "all_child_elements_pub" short:'alelp']

# $SrsField objects added for demonstrating xsl:copy-of and xsl:value-of syntax.
$DF_INTERPRO_TEST_PUBLICATIONS_COPY_OF=$SrsField:["copy-of_book_info" short:'bicop']
$DF_INTERPRO_TEST_PUBLICATIONS_VALUE_OF=$SrsField:["value-of_book_info" short:'bival']

# New abstract, cite, and db_xref fields were added to support separate indexing
# and loading for the EXAMPLES and PUBLICATIONS subentry libraries.
$DF_INTERPRO_TEST_1_PUBLICATIONS=$SrsField:["abstract_pub" short:'absp']
$DF_INTERPRO_TEST_5_1_PUBLICATIONS=$SrsField:["cite_idref_pub" short:'ctidp']
$DF_INTERPRO_TEST_8_1_PUBLICATIONS=$SrsField:["db_xref_db_pub" short:'xdbp']
$DF_INTERPRO_TEST_8_3_PUBLICATIONS=$SrsField:["db_xref_dbkey_pub" short:'xdkp']

# $SrsField object added for demonstrating loading of sub-subentries.
# The rel_ref field was only activated for the publications subentry library.
$DF_INTERPRO_TEST_22_1_PUBLICATIONS=$SrsField:["rel_ref_ipr_ref_pub" short:"relrefs"]

# "Regular" $SrsField objects contained in the PUBLICATIONS subentry.
$DF_INTERPRO_TEST_2=$SrsField:["author_list" short:'auth']
$DF_INTERPRO_TEST_3=$SrsField:["book_title" short:'bttl']
$DF_INTERPRO_TEST_13=$SrsField:["journal" short:'jrnl']
$DF_INTERPRO_TEST_14_1=$SrsField:["location_firstpage" short:'fpag']
$DF_INTERPRO_TEST_14_2=$SrsField:["location_lastpage" short:'lpag']
$DF_INTERPRO_TEST_14_3=$SrsField:["location_volume" short:'vol']
$DF_INTERPRO_TEST_14_4=$SrsField:["location_issue" short:'iss']
$DF_INTERPRO_TEST_17_1=$SrsField:["publication_id" short:'pbid']
$DF_INTERPRO_TEST_18_1=$SrsField:["book_info_english_language" short:'biel']
$DF_INTERPRO_TEST_18_2=$SrsField:["book_info_availability" short:'biav']
$DF_INTERPRO_TEST_19=$SrsField:["publisher" short:'publ']
$DF_INTERPRO_TEST_20=$SrsField:["isbn" short:'isbn']
$DF_INTERPRO_TEST_25=$SrsField:["title" short:'titl']
$DF_INTERPRO_TEST_27=$SrsField:["url" short:'url']
$DF_INTERPRO_TEST_28=$SrsField:["year" short:'year']



# "Leftover" $Field objects.
#    $Field:[$DF_INTERPRO_TEST_4 index:str indexToken:xml
#            loadPath:"category"]
#    $Field:[$DF_INTERPRO_TEST_6_1 index:str indexToken:xml
#            loadPath:"classification/@id"]
#    $Field:[$DF_INTERPRO_TEST_6_2 index:str indexToken:xml
#            loadPath:"classification/@class_type"]
#    $Field:[$DF_INTERPRO_TEST_7_1 index:str indexToken:xml
#            loadPath:"db_info/@name"]
#    $Field:[$DF_INTERPRO_TEST_7_2 index:str indexToken:xml
#            loadPath:"db_info/@version"]
#    $Field:[$DF_INTERPRO_TEST_7_3 index:str indexToken:xml
#            loadPath:"db_info/@file_date"]
#    $Field:[$DF_INTERPRO_TEST_7_4 index:str indexToken:xml
#            loadPath:"db_info/@entry_count"]
#    $Field:[$DF_INTERPRO_TEST_8_2 index:str indexToken:xml
#            loadPath:"db_xref/@version"]
#    $Field:[$DF_INTERPRO_TEST_8_4 index:str indexToken:xml
#            loadPath:"db_xref/@name"]
#    $Field:[$DF_INTERPRO_TEST_9_1 index:str indexToken:xml
#            loadPath:"del_ref/@id"]
#    $Field:[$DF_INTERPRO_TEST_10 index:str indexToken:xml
#            loadPath:"description"]
#    $Field:[$DF_INTERPRO_TEST_12_3 index:str indexToken:xml
#            loadPath:"interpro/@short_name"]
#    $Field:[$DF_INTERPRO_TEST_16_1 index:str indexToken:xml
#            loadPath:"protein/@id"]
#    $Field:[$DF_INTERPRO_TEST_22_2 index:str indexToken:xml
#            loadPath:"rel_ref/@type"]
#    $Field:[$DF_INTERPRO_TEST_23_1 index:str indexToken:xml
#            loadPath:"sec_ac/@acc"]
#    $Field:[$DF_INTERPRO_TEST_26 index:str indexToken:xml
#            loadPath:"type"]

# "Leftover" $SrsField objects.
#$DF_INTERPRO_TEST_4=$SrsField:["category" short:'????']
#$DF_INTERPRO_TEST_6_1=$SrsField:["classification_id" short:'????']
#$DF_INTERPRO_TEST_6_2=$SrsField:["classification_class_type" short:'????']
#$DF_INTERPRO_TEST_7_1=$SrsField:["db_info_name" short:'????']
#$DF_INTERPRO_TEST_7_2=$SrsField:["db_info_version" short:'????']
#$DF_INTERPRO_TEST_7_3=$SrsField:["db_info_file_date" short:'????']
#$DF_INTERPRO_TEST_7_4=$SrsField:["db_info_entry_count" short:'????']
#$DF_INTERPRO_TEST_8_2=$SrsField:["db_xref_version" short:'????']
#$DF_INTERPRO_TEST_8_4=$SrsField:["db_xref_name" short:'????']
#$DF_INTERPRO_TEST_9_1=$SrsField:["del_ref_id" short:'????']
#$DF_INTERPRO_TEST_10=$SrsField:["description" short:'????']
#$DF_INTERPRO_TEST_12_3=$SrsField:["interpro_short_name" short:'????']
#$DF_INTERPRO_TEST_16_1=$SrsField:["protein_id" short:'????']
#$DF_INTERPRO_TEST_22_2=$SrsField:["rel_ref_type" short:'????']
#$DF_INTERPRO_TEST_23_1=$SrsField:["sec_ac_acc" short:'????']
#$DF_INTERPRO_TEST_26=$SrsField:["type" short:'????']



#
# The XML "INTERPRO_TEST" databank file descriptor.
#

$INTERPRO_TEST_FILE=$FileType:[xml
  typeName:xml
  maxline:1024
  fieldTokens:entry
  fipVar:entryFip
]



#
# $Syntax object used for micro-parsing and conditional indexing.
#
$INTERPRO_TEST_SYNTAX=$Syntax:[file:"($Env:SRSDEMO)/interpro_test.is"]



#
# The index metaphors used to index the data of the XML "INTERPRO_TEST"
# databank.
#
# NOTES:
# 1. Generated automatically by the DTD-to-Icarus translator.
# 2. When modified, invoke the "srssection" command to commit
#    the modifications into the SRS system.
# 3. If missing, remember to add the "indexField:$DF_ID"
#    specification within the index metaphor for the element
#    or attribute carrying the XML "INTERPRO_TEST"
#    databank entry ID.
#

# The original OIM for abstract, used to index the abstract element
# belonging to the main interpro_test library.
$OIM_INTERPRO_TEST_1=$ObjIndexMetaphor:[className:"abstract"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_1
  path:'interpro'
  split:"[ \n\t]+"
]

# A new OIM for abstract was added to index the abstract element
# belonging to the PUBLICATIONS subentry library.
$OIM_INTERPRO_TEST_1_PUBLICATIONS=$ObjIndexMetaphor:[className:"abstract"
  nameSpace:$INTERPRO_TEST_DB
  indexField:{
    $DF_INTERPRO_TEST_1_PUBLICATIONS $DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS}
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
  path:'interpro/*/publication/book_info'
  split:"[ \n\t]+"
]

$OIM_INTERPRO_TEST_2=$ObjIndexMetaphor:[className:"author_list"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_2
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
  split:"[,]+"
]

$OIM_INTERPRO_TEST_3=$ObjIndexMetaphor:[className:"book_title"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_3
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

#$OIM_INTERPRO_TEST_4=$ObjIndexMetaphor:[className:"category"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_4
#]

# The original OIM for cite, used to index the cite/@idref attribute
# belonging to the main interpro_test library.
$OIM_INTERPRO_TEST_5=$ObjIndexMetaphor:[className:"cite"
  nameSpace:$INTERPRO_TEST_DB
  path:'interpro/abstract'
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"idref"
                       indexField:$DF_INTERPRO_TEST_5_1
    ]
  }
]

# A new OIM for cite was added to index the the cite/@idref attribute
# belonging to the PUBLICATIONS subentry library.
$OIM_INTERPRO_TEST_5_PUBLICATIONS=$ObjIndexMetaphor:[className:"cite"
  nameSpace:$INTERPRO_TEST_DB
  path:'book_info/abstract'
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"idref"
                       indexField:$DF_INTERPRO_TEST_5_1_PUBLICATIONS
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
  }
]

#$OIM_INTERPRO_TEST_6=$ObjIndexMetaphor:[className:"classification"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_6_1
#    ]
#    $AttrIndexMetaphor:[attrName:"class_type"
#                       indexField:$DF_INTERPRO_TEST_6_2
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_7=$ObjIndexMetaphor:[className:"db_info"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"name"
#                       indexField:$DF_INTERPRO_TEST_7_1
#    ]
#    $AttrIndexMetaphor:[attrName:"version"
#                       indexField:$DF_INTERPRO_TEST_7_2
#    ]
#    $AttrIndexMetaphor:[attrName:"file_date"
#                       indexField:$DF_INTERPRO_TEST_7_3
#    ]
#    $AttrIndexMetaphor:[attrName:"entry_count"
#                       indexField:$DF_INTERPRO_TEST_7_4
#    ]
#  }
#]

# The original OIM for db_xref, used to index the db_xref attributes
# belonging to the main interpro_test library.
$OIM_INTERPRO_TEST_8=$ObjIndexMetaphor:[className:"db_xref"
  nameSpace:$INTERPRO_TEST_DB
  path:'interpro/abstract'
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"db"
                       indexField:$DF_INTERPRO_TEST_8_1
    ]
#    $AttrIndexMetaphor:[attrName:"version"
#                       indexField:$DF_INTERPRO_TEST_8_2
#    ]
    $AttrIndexMetaphor:[attrName:"dbkey"
                       indexField:$DF_INTERPRO_TEST_8_3
    ]
#    $AttrIndexMetaphor:[attrName:"name"
#                       indexField:$DF_INTERPRO_TEST_8_4
#    ]
  }
]

# A new OIM for db_xref was added to index the db_xref attributes
# belonging to the PUBLICATIONS subentry library.
$OIM_INTERPRO_TEST_8_PUBLICATIONS=$ObjIndexMetaphor:[className:"db_xref"
  nameSpace:$INTERPRO_TEST_DB
  path:'publication'
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"db"
                       indexField:$DF_INTERPRO_TEST_8_1_PUBLICATIONS
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
    $AttrIndexMetaphor:[attrName:"dbkey"
                       indexField:$DF_INTERPRO_TEST_8_3_PUBLICATIONS
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
  }
]

# A new OIM for db_xref was added to index the db_xref attributes
# belonging to the EXAMPLES subentry library.
$OIM_INTERPRO_TEST_8_EXAMPLES=$ObjIndexMetaphor:[className:"db_xref"
  nameSpace:$INTERPRO_TEST_DB
  path:'interpro&example_list&example'
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"db"
                       indexField:$DF_INTERPRO_TEST_8_1_EXAMPLES
                       ofSubentry:$INTERPRO_TEST_EXAMPLES_DB
    ]
    $AttrIndexMetaphor:[attrName:"dbkey"
                       indexField:$DF_INTERPRO_TEST_8_3_EXAMPLES
                       ofSubentry:$INTERPRO_TEST_EXAMPLES_DB
    ]
  }
]

#$OIM_INTERPRO_TEST_9=$ObjIndexMetaphor:[className:"del_ref"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_9_1
#    ]
#  }
#]

#$OIM_INTERPRO_TEST_10=$ObjIndexMetaphor:[className:"description"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_10
#]

$OIM_INTERPRO_TEST_11=$ObjIndexMetaphor:[className:"example"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_11
  subentry:$INTERPRO_TEST_EXAMPLES_DB
]

$OIM_INTERPRO_TEST_12=$ObjIndexMetaphor:[className:"interpro"
  nameSpace:$INTERPRO_TEST_DB
  syntax:$INTERPRO_TEST_SYNTAX
  attrMetaphors:{
    # The following $AIM object was modified to demonstrate
    # micro-parsing of the interpro/@id attribute.
    $AttrIndexMetaphor:[attrName:"id"
                       indexField:{$DF_ID $DF_INTERPRO_TEST_12_1}
                       token:stripColon
    ]
    $AttrIndexMetaphor:[attrName:"type"
                       indexField:$DF_INTERPRO_TEST_12_2
    ]
    # The following $AIM object was modified to demonstrate
    # conditional indexing of the interpro/@short_name attribute.
    # If interpro/@type is 'Domain', index short_name into 
    # $DF_INTERPRO_TEST_12_3_Domain. If interpro/@type is 'Family',
    # index short_name into $DF_INTERPRO_TEST_12_3_Family.
    $AttrIndexMetaphor:[attrName:"short_name"
       indexField:{$DF_INTERPRO_TEST_12_3_Domain
                                   $DF_INTERPRO_TEST_12_3_Family}
       conditionField:$DF_INTERPRO_TEST_12_2
       conditionToken:evaluateType
    ]
  }
]

$OIM_INTERPRO_TEST_13=$ObjIndexMetaphor:[className:"journal"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_13
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

$OIM_INTERPRO_TEST_14=$ObjIndexMetaphor:[className:"location"
  nameSpace:$INTERPRO_TEST_DB
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"firstpage"
                       indexField:$DF_INTERPRO_TEST_14_1
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
    $AttrIndexMetaphor:[attrName:"lastpage"
                       indexField:$DF_INTERPRO_TEST_14_2
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
    $AttrIndexMetaphor:[attrName:"volume"
                       indexField:$DF_INTERPRO_TEST_14_3
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
    $AttrIndexMetaphor:[attrName:"issue"
                       indexField:$DF_INTERPRO_TEST_14_4
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
  }
]

$OIM_INTERPRO_TEST_15=$ObjIndexMetaphor:[className:"name"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_15
]

#$OIM_INTERPRO_TEST_16=$ObjIndexMetaphor:[className:"protein"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"id"
#                       indexField:$DF_INTERPRO_TEST_16_1
#    ]
#  }
#]

$OIM_INTERPRO_TEST_17=$ObjIndexMetaphor:[className:"publication"
  nameSpace:$INTERPRO_TEST_DB
  subentry:$INTERPRO_TEST_PUBLICATIONS_DB
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"id"
                       indexField:$DF_INTERPRO_TEST_17_1
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
  }
]

$OIM_INTERPRO_TEST_18=$ObjIndexMetaphor:[className:"book_info"
  nameSpace:$INTERPRO_TEST_DB
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"english_language"
                       indexField:$DF_INTERPRO_TEST_18_1
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
    $AttrIndexMetaphor:[attrName:"availability"
                       indexField:$DF_INTERPRO_TEST_18_2
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
  }
]

$OIM_INTERPRO_TEST_19=$ObjIndexMetaphor:[className:"publisher"
  nameSpace:$INTERPRO_TEST_DB
  indexField:{$DF_INTERPRO_TEST_19 $DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS}
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

$OIM_INTERPRO_TEST_20=$ObjIndexMetaphor:[className:"isbn"
  nameSpace:$INTERPRO_TEST_DB
  indexField:{$DF_INTERPRO_TEST_20 $DF_INTERPRO_TEST_PUBLICATIONS_ALL_CHILD_ELEMENTS}
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

$OIM_INTERPRO_TEST_21=$ObjIndexMetaphor:[className:"reaction"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_21
]

$OIM_INTERPRO_TEST_22=$ObjIndexMetaphor:[className:"rel_ref"
  nameSpace:$INTERPRO_TEST_DB
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"ipr_ref"
                       indexField:$DF_INTERPRO_TEST_22_1_PUBLICATIONS
                       ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
    ]
#    $AttrIndexMetaphor:[attrName:"type"
#                       indexField:$DF_INTERPRO_TEST_22_2
#    ]
  }
]

#$OIM_INTERPRO_TEST_23=$ObjIndexMetaphor:[className:"sec_ac"
#  nameSpace:$INTERPRO_TEST_DB
#  attrMetaphors:{
#    $AttrIndexMetaphor:[attrName:"acc"
#                       indexField:$DF_INTERPRO_TEST_23_1
#    ]
#  }
#]

$OIM_INTERPRO_TEST_24=$ObjIndexMetaphor:[className:"taxon"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_24
  attrMetaphors:{
    $AttrIndexMetaphor:[attrName:"tax_id"
                       indexField:$DF_INTERPRO_TEST_24_1
    ]
  }
]

$OIM_INTERPRO_TEST_25=$ObjIndexMetaphor:[className:"title"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_25
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

#$OIM_INTERPRO_TEST_26=$ObjIndexMetaphor:[className:"type"
#  nameSpace:$INTERPRO_TEST_DB
#  indexField:$DF_INTERPRO_TEST_26
#]

$OIM_INTERPRO_TEST_27=$ObjIndexMetaphor:[className:"url"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_27
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

$OIM_INTERPRO_TEST_28=$ObjIndexMetaphor:[className:"year"
  nameSpace:$INTERPRO_TEST_DB
  indexField:$DF_INTERPRO_TEST_28
  ofSubentry:$INTERPRO_TEST_PUBLICATIONS_DB
]

#
# The XML "INTERPRO_TEST" databank default attribute values. DO NOT TOUCH!
#

$INTERPRO_TEST_AllAttributeValues={
  'cite':{
    'idref':''
  }
  'classification':{
    'id':''
    'class_type':''
  }
  'db_info':{
    'name':''
    'version':''
    'file_date':''
    'entry_count':''
  }
  'db_xref':{
    'db':''
    'version':''
    'dbkey':''
    'name':''
  }
  'del_ref':{
    'id':''
  }
  'interpro':{
    'id':''
    'type':''
    'short_name':''
  }
  'location':{
    'firstpage':''
    'lastpage':''
    'volume':''
    'issue':''
  }
  'protein':{
    'id':''
  }
  'publication':{
    'id':''
  }
  'book_info':{
    'english_language':'yes'
    'availability':'publisher'
  }
  'rel_ref':{
    'ipr_ref':''
    'type':''
  }
  'sec_ac':{
    'acc':''
  }
  'taxon':{
    'tax_id':''
  }
}

#
# The XML "INTERPRO_TEST" databank general parsed entities. DO NOT TOUCH!
#

$INTERPRO_TEST_GeneralParsedEntities={
  'pub':'publisher'
  'ol':'on-line'
  'dlib':'domestic_library'
  'flib':'foreign_library'
  'oop':'out_of_print'
  'ea':'et al.'
}

#
# The XML "INTERPRO_TEST" databank child element list. DO NOT TOUCH!
#

$INTERPRO_TEST_ChildElementList={
  'abstract':{
    'cite':''
    'taxon':''
    'db_xref':''
    'reaction':''
  }
  'author_list':{}
  'book_title':{}
  'category':{}
  'child_list':{
    'rel_ref':''
  }
  'cite':{}
  'class_list':{
    'classification':''
  }
  'classification':{
    'category':''
    'description':''
  }
  'contains':{
    'rel_ref':''
  }
  'db_info':{}
  'db_xref':{}
  'del_ref':{
    'description':''
  }
  'deleted_entries':{
    'del_ref':''
  }
  'description':{}
  'example':{
    'cite':''
    'db_xref':''
  }
  'example_list':{
    'example':''
  }
  'external_doc_list':{
    'db_xref':''
  }
  'found_in':{
    'rel_ref':''
  }
  'interpro':{
    'name':''
    'sec_list':''
    'abstract':''
    'class_list':''
    'example_list':''
    'pub_list':''
    'contains':''
    'external_doc_list':''
    'member_list':''
    'parent_list':''
    'child_list':''
    'found_in':''
  }
  'interprodb':{
    'release':''
    'interpro':''
  }
  'journal':{}
  'location':{}
  'member_list':{
    'db_xref':''
  }
  'name':{}
  'parent_list':{
    'rel_ref':''
  }
  'protein':{}
  'pub_list':{
    'publication':''
  }
  'publication':{
    'author_list':''
    'title':''
    'db_xref':''
    'journal':''
    'book_title':''
    'book_info':''
    'location':''
    'year':''
    'url':''
  }
  'book_info':{
    'abstract':''
    'publisher':''
    'isbn':''
  }
  'publisher':{}
  'isbn':{}
  'reaction':{}
  'rel_ref':{}
  'release':{
    'db_info':''
  }
  'sec_ac':{}
  'sec_list':{
    'sec_ac':''
  }
  'taxon':{}
  'title':{}
  'type':{}
  'url':{}
  'year':{}
}
Example II.5 game2_printer.i

#
# The XML Printing Metaphor for the XML "GAME2" library.
#
# NOTES: 
# 1. The XML printing metaphors are generated automatically by the 
#    dtd2ica utility when the '-printer' command line option is used.
#    a) For a library with an internal DTD subset, use
#       dtd2ica .xml -lib  -printer
#    b) For a library with no internal DTD subset, use
#       dtd2ica -dtd .dtd -lib  -printer
#    c) The file containing the XML printing metaphors will be called 
#       _printer.i, and will be saved in the $SRSSITE directory.
# 2. The _printer.i file must be edited to create associations
#    between $LoadAttr objects in the source loader and XML elements
#    and attributes in the target XML format.
#    a) Add a 'sourceLoader' attribute to the top-level XMLPrintMetaphor 
#       object (i.e. the print metaphor for the entry-delimiting element).
#       The value of the 'sourceLoader' attribute should be the name of
#       the main loader for the source library from which data is being
#       loaded, e.g. sourceLoader:$EmblEntry_Class.
#    b) Add an 'id' attribute to the top-level XMLPrintMetaphor object.
#       The value of this attribute should match the value of the
#       'xmlPrintMetaphor' attribute of the ToXml command which is used 
#       to invoke the printing metaphors (see the sample script in 
#       point 5 below), e.g. id:"".
#    c) Uncomment the $XMLPrintAttr objects for the XML attributes that
#       will appear in the output, and the 'from...$XMLPrintContent' 
#       objects for the XML elements that will appear in the output.
#    d) In each uncommented $XMLPrintContent object, replace the four 
#       question marks ("????") which appear as the value of the unnamed
#       attribute with the name of the $LoadAttr object in the source 
#       data loader from which the data should be retrieved. Also
#       replace the four question marks in the 'sourceLoader' attribute
#       with the name of the main loader for the source library, e.g. 
#       sourceLoader:$EmblEntry_Class.
# 3. Edit the $SRSSITE/srsdb.i file to integrate the XML printing 
#    metaphors into your SRS installation by adding the following line:
#    file:"SRSSITE:_printer.i"
# 4. Invoke the "srssection" command to make the "GAME2" XML printing
#    metaphors available to the SRS system.
# 5. To use the XML printing metaphors to print data from any type of 
#    library (flat file, RDB, or other XML format) in the "GAME2" 
#    XML format, use an Icarus script that
#    a) queries the source library and returns a set of entries,
#    b) iterates over the entry set and,
#    c) invokes the printing metaphors using the Icarus ToXml command.
#    d) Sample Icarus script:
#       $s=$Session:[]
#       $set=$s.query:'embl'
#       $Print:|
#              |<LoadedSet>
#       foreach:[$entry in:$set] {
#         $obj = $entry.load:Embl_Entry
#         $Print:$ToXml:[$obj xmlPrintMetaphor:]
#       }
#       $Print:"</LoadedSet>"
#
$GAME2_PRINTER_name = $XMLPrintMetaphor:["name"
  from:{
    $XMLPrintContent:[objattrname:"CC" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"Source" sourceLoader:$GenbankEntry_Class]
  }
]

$GAME2_PRINTER_description = $XMLPrintMetaphor:["description"
  from:{
    $XMLPrintContent:[objattrname:"Des" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"Des" sourceLoader:$GenbankEntry_Class]
  }
]

$GAME2_PRINTER_type = $XMLPrintMetaphor:["type"
  attributes:{
#    $XMLPrintAttr:["rdf:resource"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_seq_link = $XMLPrintMetaphor:["seq_link"
  children:{
    $GAME2_PRINTER_link
  }
]

$GAME2_PRINTER_version = $XMLPrintMetaphor:["version"
  from:{
    $XMLPrintContent:[objattrname:"SeqV" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"SeqV" sourceLoader:$GenbankEntry_Class]
  }
]

$GAME2_PRINTER_ref_link = $XMLPrintMetaphor:["ref_link"
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["ref"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["element_name"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_dbxref = $XMLPrintMetaphor:["dbxref"
  children:{
    $GAME2_PRINTER_xref_db
    $GAME2_PRINTER_xref_acc
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_relationship = $XMLPrintMetaphor:["relationship"
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_xref_db = $XMLPrintMetaphor:["xref_db"
  from:{
    $XMLPrintContent:[objattrname:"links/db" sourceLoader:$EmblEntry_Class]
  }
]

$GAME2_PRINTER_xref_acc = $XMLPrintMetaphor:["xref_acc"
  attributes:{
#    $XMLPrintAttr:["field"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
  from:{
    $XMLPrintContent:[objattrname:"Acc" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"Acc" sourceLoader:$GenbankEntry_Class]
  }
]

$GAME2_PRINTER_simple_xlink = $XMLPrintMetaphor:["simple_xlink"
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:href"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:role"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:title"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:show"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["xlink:actuate"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_rdf_link = $XMLPrintMetaphor:["rdf_link"
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:resource"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]
 
$GAME2_PRINTER_span = $XMLPrintMetaphor:["span"
  children:{
    $GAME2_PRINTER_start
    $GAME2_PRINTER_end
  }
  attributes:{
#    $XMLPrintAttr:["between"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["either_dir"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_start = $XMLPrintMetaphor:["start"
  from:{
    $XMLPrintContent:[objattrname:"features/begin" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"features/begin" sourceLoader:$GenbankEntry_Class]
  }
]
 
$GAME2_PRINTER_end = $XMLPrintMetaphor:["end"
  from:{
    $XMLPrintContent:[objattrname:"features/end" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"features/end" sourceLoader:$GenbankEntry_Class]
  }
]
 
$GAME2_PRINTER_alignment = $XMLPrintMetaphor:["alignment"
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_creation_date = $XMLPrintMetaphor:["creation_date"
  from:{
    $XMLPrintContent:[objattrname:"CDate" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"Date" sourceLoader:$GenbankEntry_Class]
  }
]
 
$GAME2_PRINTER_residues = $XMLPrintMetaphor:["residues"
  from:{
    $XMLPrintContent:[objattrname:"seq/seq" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"seq/seq" sourceLoader:$GenbankEntry_Class]
  }
]
 
$GAME2_PRINTER_result_set = $XMLPrintMetaphor:["result_set"
  children:{
    $GAME2_PRINTER_type
    $GAME2_PRINTER_creation_date
    $GAME2_PRINTER_description
    $GAME2_PRINTER_link
# The following $XMLPrintMetaphor object was not generated due 
# to an error in the GAME2 DTD, so it has been commented out.
#    $GAME2_PRINTER_feat
    $GAME2_PRINTER_result_span
  }
]

$GAME2_PRINTER_result_span = $XMLPrintMetaphor:["result_span"
  children:{
    $GAME2_PRINTER_score
    $GAME2_PRINTER_type
    $GAME2_PRINTER_description
    $GAME2_PRINTER_link
    $GAME2_PRINTER_seq_relationship
  }
]

$GAME2_PRINTER_score = $XMLPrintMetaphor:["score"
  attributes:{
#    $XMLPrintAttr:["score_type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_program = $XMLPrintMetaphor:["program"
  children:{
    $GAME2_PRINTER_program_name
    $GAME2_PRINTER_version
    $GAME2_PRINTER_parameter
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:resource"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_program_name = $XMLPrintMetaphor:["program_name"
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]
 
$GAME2_PRINTER_parameter = $XMLPrintMetaphor:["parameter"
  attributes:{
#    $XMLPrintAttr:["param_type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_database = $XMLPrintMetaphor:["database"
  attributes:{
#    $XMLPrintAttr:["rdf:resource"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
#  from:{
#    $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#  }
]

$GAME2_PRINTER_feature_set = $XMLPrintMetaphor:["feature_set"
  children:{
    $GAME2_PRINTER_name
    $GAME2_PRINTER_author
    $GAME2_PRINTER_version
    $GAME2_PRINTER_evidence
    $GAME2_PRINTER_produces_seq
    $GAME2_PRINTER_type
    $GAME2_PRINTER_creation_date
    $GAME2_PRINTER_description
    $GAME2_PRINTER_link
# The following $XMLPrintMetaphor object was not generated due 
# to an error in the GAME2 DTD, so it has been commented out.
#    $GAME2_PRINTER_feat
    $GAME2_PRINTER_feature_span
  }
]

$GAME2_PRINTER_feature_span = $XMLPrintMetaphor:["feature_span"
  children:{
    $GAME2_PRINTER_name
    $GAME2_PRINTER_type
    $GAME2_PRINTER_description
    $GAME2_PRINTER_link
    $GAME2_PRINTER_seq_relationship
    $GAME2_PRINTER_evidence
# The following $XMLPrintMetaphor object was not generated due 
# to an error in the GAME2 DTD, so it has been commented out.
#    $GAME2_PRINTER_tag_residues
  }
]

$GAME2_PRINTER_produces_seq = $XMLPrintMetaphor:["produces_seq"
  children:{
# The following $XMLPrintMetaphor object was not generated due 
# to an error in the GAME2 DTD, so it has been commented out.
#    $GAME2_PRINTER_seq_seq
    $GAME2_PRINTER_link
  }
]

$GAME2_PRINTER_author = $XMLPrintMetaphor:["author"
  attributes:{
#    $XMLPrintAttr:["rdf:resource"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["email"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
  from:{
    $XMLPrintContent:[objattrname:"references/authors" sourceLoader:$EmblEntry_Class]
    $XMLPrintContent:[objattrname:"references/authors" sourceLoader:$GenbankEntry_Class]
  }
]

$GAME2_PRINTER_evidence = $XMLPrintMetaphor:["evidence"
  children:{
    $GAME2_PRINTER_link
  }
  attributes:{
#    $XMLPrintAttr:["type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_game = $XMLPrintMetaphor:["game"
  id:"game"
  sourceLoader:{$GenbankEntry_Class $EmblEntry_Class}
  children:{
    $GAME2_PRINTER_seq
    $GAME2_PRINTER_annotation
    $GAME2_PRINTER_computational_analysis
  }
]

$GAME2_PRINTER_annotation = $XMLPrintMetaphor:["annotation"
  children:{
    $GAME2_PRINTER_name
    $GAME2_PRINTER_type
    $GAME2_PRINTER_description
    $GAME2_PRINTER_seq_link
    $GAME2_PRINTER_link
    $GAME2_PRINTER_feature_set
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["id"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_computational_analysis = $XMLPrintMetaphor:["computational_analysis"
  children:{
    $GAME2_PRINTER_type
    $GAME2_PRINTER_description
    $GAME2_PRINTER_database
    $GAME2_PRINTER_program
    $GAME2_PRINTER_creation_date
    $GAME2_PRINTER_seq_link
    $GAME2_PRINTER_link
    $GAME2_PRINTER_result_set
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["id"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["seq"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_seq = $XMLPrintMetaphor:["seq"
  children:{
    $GAME2_PRINTER_name
    $GAME2_PRINTER_link
    $GAME2_PRINTER_seq_relationship
    $GAME2_PRINTER_residues
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
    $XMLPrintAttr:["id"
      from:{
        $XMLPrintContent:[objattrname:"Key" sourceLoader:$EmblEntry_Class]
        $XMLPrintContent:[objattrname:"Key" sourceLoader:$GenbankEntry_Class]
      }
    ]
    $XMLPrintAttr:["length"
      from:{
        $XMLPrintContent:[objattrname:"seqLen" sourceLoader:$EmblEntry_Class]
        $XMLPrintContent:[objattrname:"seqLen" sourceLoader:$GenbankEntry_Class]
      }
    ]
#    $XMLPrintAttr:["type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]
 
$GAME2_PRINTER_seq_relationship = $XMLPrintMetaphor:["seq_relationship"
  children:{
    $GAME2_PRINTER_link
    $GAME2_PRINTER_span
    $GAME2_PRINTER_alignment
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["type"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]

$GAME2_PRINTER_link = $XMLPrintMetaphor:["link"
  children:{
    $GAME2_PRINTER_ref_link
    $GAME2_PRINTER_dbxref
    $GAME2_PRINTER_simple_xlink
    $GAME2_PRINTER_rdf_link
  }
  attributes:{
#    $XMLPrintAttr:["xmlns"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
#    $XMLPrintAttr:["rdf:about"
#      from:{
#        $XMLPrintContent:[objattrname:"????" sourceLoader:????]
#      }
#    ]
  }
]