Ecological Markup Language, v2.0.1

Describes parser configuration for: eml201Subprocessor

Format IDs Processed

This parser processes the following DataONE format IDs:

  • Ecological Metadata Language, version 2.0.1
    formatId: eml://ecoinformatics.org/eml-2.0.1

A full list of DataONE format IDs can be found at https://cn.dataone.org/cn/v2/formats/

Fields

The following fields in the solr index are populated from values retrieved from this type of metadata document. Note that these are in addition to the information extracted from System Metadata Parser.

Solr Field Multi Dedupe Source
Index.abstract False False
//dataset/abstract/descendant::text()
Processor: MergeSolrField
Configuration: eml.abstract
Index.keywords True True
//dataset/keywordSet/keyword/text()
Processor: SolrField
Configuration: eml.keywords
Index.title False False
//dataset/title/text()
Processor: SolrField
Configuration: eml.title
Index.project True False
//dataset/project/title/text()
Processor: SolrField
Configuration: eml.project
Index.southBoundCoord False False
//dataset/coverage/geographicCoverage/boundingCoordinates/
southBoundingCoordinate/text()
Processor: SolrField
Configuration: eml.southBoundCoord
Index.northBoundCoord False False
//dataset/coverage/geographicCoverage/boundingCoordinates/
northBoundingCoordinate/text()
Processor: SolrField
Configuration: eml.northBoundCoord
Index.westBoundCoord False False
//dataset/coverage/geographicCoverage/boundingCoordinates/
westBoundingCoordinate/text()
Processor: SolrField
Configuration: eml.westBoundCoord
Index.eastBoundCoord False False
//dataset/coverage/geographicCoverage/boundingCoordinates/
eastBoundingCoordinate/text()
Processor: SolrField
Configuration: eml.eastBoundCoord
Index.site True False
//dataset/coverage/geographicCoverage/geographicDescription/
text()
Processor: SolrField
Configuration: eml.site
Index.beginDate False False
//dataset/coverage/temporalCoverage/rangeOfDates/beginDate/
calendarDate/text() | //dataset/coverage/
temporalCoverage/singleDateTime/calendarDate/text()
Processor: SolrField
Configuration: eml.beginDate
Index.endDate False False
//dataset/coverage/temporalCoverage/rangeOfDates/endDate/
calendarDate/text() | //dataset/coverage/
temporalCoverage/singleDateTime/calendarDate/text()
Processor: SolrField
Configuration: eml.endDate
Index.pubDate False False
//dataset/pubDate/text()
Processor: SolrField
Configuration: eml.pubDate
Index.author False  
//dataset/creator/individualName ->{{[givenName] [surName]
}}; givenName = givenName/text(); surName = surName/
text()
Configuration: eml.author
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Index.authorGivenName False False
//dataset/creator[1]/individualName[1]/givenName/text()
Processor: SolrField
Configuration: eml.authorGivenName
Index.authorSurName False False
//dataset/creator[1]/individualName[1]/surName/text()
Processor: SolrField
Configuration: eml.authorSurName
Index.authorGivenNameSort False False
//dataset/creator[1]/individualName[1]/givenName/text()
Processor: SolrField
Index.authorSurNameSort False False
//dataset/creator[1]/individualName[1]/surName/text()
Processor: SolrField
Configuration: eml.authorSurNameSort
Index.authorLastName True False
//dataset/creator/individualName/surName/text()
Processor: SolrField
Configuration: eml.author_lname
Index.investigator True False
//dataset/creator/individualName/surName/text()
Processor: SolrField
Configuration: eml.investigator
Index.origin False  
//dataset/creator ->{{[individualName]||[organizationName]
}}; organizationName = organizationName/text()
individualName ->{{[givenName] [surName]}};
givenName = givenName/text(); surName = surName/
text()
Configuration: eml.origin
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Index.contactOrganization True True
//dataset/creator/organizationName/text()
Processor: SolrField
Index.genus True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Genus" or ../taxonRankName="genus"]/text()
Processor: SolrField
Configuration: eml.genus
Index.species True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Species" or ../taxonRankName="species"]/text()
Processor: SolrField
Configuration: eml.species
Index.kingdom True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Kingdom" or ../taxonRankName="kingdom"]/text()
Processor: SolrField
Configuration: eml.kingdom
Index.order True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Order" or ../taxonRankName="order"]/text()
Processor: SolrField
Configuration: eml.order
Index.phylum True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Phylum" or ../taxonRankName="phylum"]/text() | //
taxonomicClassification/taxonRankValue[../
taxonRankName="Division" or ../taxonRankName=
"division"]/text()
Processor: SolrField
Configuration: eml.phylum
Index.family True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Family" or ../taxonRankName="family"]/text()
Processor: SolrField
Configuration: eml.family
Index.class True True
//taxonomicClassification/taxonRankValue[../taxonRankName=
"Class" or ../taxonRankName="class"]/text()
Processor: SolrField
Configuration: eml.class
Index.scientificName False  
//taxonomicClassification[../taxonRankName="Genus" or ../
taxonRankName="genus"] ->{{[genus] [species]}};
genus = ../taxonRankValue/text(); species =
taxonRankValue/text()
Configuration: eml.scientificName
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Index.attributeName True False
//dataTable/attributeList/attribute/attributeName/text()
Processor: SolrField
Configuration: eml.attributeName
Index.attributeLabel True False
//dataTable/attributeList/attribute/attributeLabel/text()
Processor: SolrField
Configuration: eml.attributeLabel
Index.attributeDescription True False
//dataTable/attributeList/attribute/attributeDefinition/
text()
Processor: SolrField
Index.attributeUnit True False
//dataTable//standardUnit/text() | //dataTable//customUnit/
text()
Processor: SolrField
Configuration: eml.attributeUnit
Index.attribute False  
//dataTable/attributeList/attribute ->{{[attributeName] [
attributeLabel] [attributeDescription] [
attributeUnit]}}; attributeName = attributeName/
text(); attributeLabel = attributeLabel/text();
attributeDescription = attributeDefinition/text();
attributeUnit = .//standardUnit/text() | .//
customUnit/text()
Configuration: eml.attributeText
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Index.fileID    
Processor: ResolveSolrField
Configuration: eml.fileID
Notes: SolrField which configures the resolve url for the document being processed.
Converter:
Index.text    
Configuration: eml.fullText
Converter:
Index.geohash_1 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash1
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_2 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash2
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_3 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash3
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_4 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash4
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_5 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash5
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_6 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash6
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_7 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash7
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_8 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash8
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.geohash_9 False  
//dataset/coverage/geographicCoverage/boundingCoordinates
->{{[northBoundingCoordinate] [
southBoundingCoordinate] [eastBoundingCoordinate] [
westBoundingCoordinate]}}; northBoundingCoordinate =
 northBoundingCoordinate/text();
southBoundingCoordinate = southBoundingCoordinate/
text(); eastBoundingCoordinate =
eastBoundingCoordinate/text();
westBoundingCoordinate = westBoundingCoordinate/
text()
Configuration: eml.geohash9
Notes: This bean uses a template populated from additional sources. See configuration for more details.
Converter: GeohashConverter
Index.isService False False
boolean(//software/implementation/distribution/online/url)
Processor: SolrField
Configuration: eml.isService
Index.serviceTitle False False
//software/title//text()[normalize-space()]
Processor: SolrField
Configuration: eml.serviceTitle
Index.serviceDescription False False
//software/abstract//text()[normalize-space()]
Processor: SolrField
Configuration: eml.serviceDescription
Index.serviceEndpoint True False
//software/implementation/distribution/online/url/text()
Processor: SolrField
Configuration: eml.serviceEndpoint

Bean Configurations

eml.abstract

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.abstract" class="org.dataone.cn.indexer.parser.MergeSolrField">
       <constructor-arg name="name" value="abstract"/>
       <constructor-arg name="xpath" value="//dataset/abstract/descendant::text()"/>
       <constructor-arg name="delimiter" value=" "/>
       <property name="multivalue" value="false"/>
       <property name="dedupe" value="false"/>
     </bean>

eml.keywords

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.keywords" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="keywords"/>
             <constructor-arg name="xpath" value="//dataset/keywordSet/keyword/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.title

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.title" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="title"/>
             <constructor-arg name="xpath" value="//dataset/title/text()"/>
             <property name="multivalue" value="false"/>
     </bean>

eml.project

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.project" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="project"/>
             <constructor-arg name="xpath" value="//dataset/project/title/text()"/>
             <property name="multivalue" value="true"/>
     </bean>

eml.southBoundCoord

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.southBoundCoord" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="southBoundCoord"/>
             <constructor-arg name="xpath" value="//dataset/coverage/geographicCoverage/boundingCoordinates/southBoundingCoordinate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="solrLatitudeConverter"/>
     </bean>

eml.northBoundCoord

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.northBoundCoord" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="northBoundCoord"/>
             <constructor-arg name="xpath" value="//dataset/coverage/geographicCoverage/boundingCoordinates/northBoundingCoordinate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="solrLatitudeConverter"/>
     </bean>

eml.westBoundCoord

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.westBoundCoord" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="westBoundCoord"/>
             <constructor-arg name="xpath" value="//dataset/coverage/geographicCoverage/boundingCoordinates/westBoundingCoordinate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="solrLongitudeConverter"/>
     </bean>

eml.eastBoundCoord

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.eastBoundCoord" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="eastBoundCoord"/>
             <constructor-arg name="xpath" value="//dataset/coverage/geographicCoverage/boundingCoordinates/eastBoundingCoordinate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="solrLongitudeConverter"/>
     </bean>

eml.site

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.site" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="site"/>
             <constructor-arg name="xpath" value="//dataset/coverage/geographicCoverage/geographicDescription/text()"/>
             <property name="multivalue" value="true"/>
     </bean>

eml.beginDate

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.beginDate" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="beginDate"/>
             <constructor-arg name="xpath" value="//dataset/coverage/temporalCoverage/rangeOfDates/beginDate/calendarDate/text() | //dataset/coverage/temporalCoverage/singleDateTime/calendarDate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="dateConverter"/>
     </bean>

eml.endDate

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.endDate" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="endDate"/>
             <constructor-arg name="xpath" value="//dataset/coverage/temporalCoverage/rangeOfDates/endDate/calendarDate/text() | //dataset/coverage/temporalCoverage/singleDateTime/calendarDate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="dateConverter"/>
     </bean>

eml.pubDate

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.pubDate" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="pubDate"/>
             <constructor-arg name="xpath" value="//dataset/pubDate/text()"/>
             <property name="multivalue" value="false"/>
             <property name="converter" ref="dateConverter"/>
     </bean>

eml.author

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.author" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="false" p:root-ref="eml.authorNameRoot">
                     <constructor-arg name="name" value="author"/>
     </bean>

eml.authorGivenName

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.authorGivenName" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="authorGivenName"/>
             <constructor-arg name="xpath" value="//dataset/creator[1]/individualName[1]/givenName/text()"/>
     </bean>

eml.authorSurName

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.authorSurName" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="authorSurName"/>
             <constructor-arg name="xpath" value="//dataset/creator[1]/individualName[1]/surName/text()"/>
     </bean>

eml.authorGivenNameSort

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.authorGivenNameSort" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="authorGivenNameSort"/>
             <constructor-arg name="xpath" value="//dataset/creator[1]/individualName[1]/givenName/text()"/>
     </bean>

eml.authorSurNameSort

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.authorSurNameSort" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="authorSurNameSort"/>
             <constructor-arg name="xpath" value="//dataset/creator[1]/individualName[1]/surName/text()"/>
     </bean>

eml.author_lname

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.author_lname" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="authorLastName"/>
             <constructor-arg name="xpath" value="//dataset/creator/individualName/surName/text()"/>
             <property name="multivalue" value="true"/>
     </bean>

eml.investigator

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.investigator" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="investigator"/>
             <constructor-arg name="xpath" value="//dataset/creator/individualName/surName/text()"/>
             <property name="multivalue" value="true"/>
     </bean>

eml.origin

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.origin" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.originRoot">
             <constructor-arg name="name" value="origin"/>
     </bean>

eml.contactOrganization

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.contactOrganization" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="contactOrganization"/>
             <constructor-arg name="xpath" value="//dataset/creator/organizationName/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.genus

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.genus" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="genus"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Genus&quot; or ../taxonRankName=&quot;genus&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.species

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.species" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="species"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Species&quot; or ../taxonRankName=&quot;species&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.kingdom

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.kingdom" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="kingdom"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Kingdom&quot; or ../taxonRankName=&quot;kingdom&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.order

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.order" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="order"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Order&quot; or ../taxonRankName=&quot;order&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.phylum

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.phylum" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="phylum"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Phylum&quot; or ../taxonRankName=&quot;phylum&quot;]/text() | //taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Division&quot; or ../taxonRankName=&quot;division&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.family

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.family" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="family"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Family&quot; or ../taxonRankName=&quot;family&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.class

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.class" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="class"/>
             <constructor-arg name="xpath" value="//taxonomicClassification/taxonRankValue[../taxonRankName=&quot;Class&quot; or ../taxonRankName=&quot;class&quot;]/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="true"/>
     </bean>

eml.scientificName

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.scientificName" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.scientificNameRoot">
                     <constructor-arg name="name" value="scientificName"/>
     </bean>

eml.attributeName

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.attributeName" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="attributeName"/>
             <constructor-arg name="xpath" value="//dataTable/attributeList/attribute/attributeName/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="false"/>
     </bean>

eml.attributeLabel

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.attributeLabel" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="attributeLabel"/>
             <constructor-arg name="xpath" value="//dataTable/attributeList/attribute/attributeLabel/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="false"/>
     </bean>

eml.attributeDescription

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.attributeDescription" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="attributeDescription"/>
             <constructor-arg name="xpath" value="//dataTable/attributeList/attribute/attributeDefinition/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="false"/>
     </bean>

eml.attributeUnit

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.attributeUnit" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="attributeUnit"/>
             <constructor-arg name="xpath" value="//dataTable//standardUnit/text() | //dataTable//customUnit/text()"/>
             <property name="multivalue" value="true"/>
             <property name="dedupe" value="false"/>
     </bean>

eml.attributeText

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.attributeText" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.attributeTextRoot">
                     <constructor-arg name="name" value="attribute"/>
     </bean>

eml.fileID

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.fileID" class="org.dataone.cn.indexer.parser.ResolveSolrField">
             <constructor-arg name="name" value="fileID"/>
     </bean>

eml.fullText

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.fullText" class="org.dataone.cn.indexer.parser.AggregateSolrField">
             <property name="name" value="text"/>
             <property name="solrFields">
                     <list>
                     <ref bean="eml.text"/>
                     <ref bean="eml.attributeName.noDupe"/>
                     <ref bean="eml.attributeLabel.noDupe"/>
                     <ref bean="eml.attributeDescription.noDupe"/>
                     <ref bean="eml.attributeUnit.noDupe"/>
             </list>
             </property>
     </bean>

eml.geohash1

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash1" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_1"/>
             <property name="converter" ref="geohashConverter_1"/>
     </bean>

eml.geohash2

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash2" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_2"/>
             <property name="converter" ref="geohashConverter_2"/>
     </bean>

eml.geohash3

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash3" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_3"/>
             <property name="converter" ref="geohashConverter_3"/>
     </bean>

eml.geohash4

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash4" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_4"/>
             <property name="converter" ref="geohashConverter_4"/>
     </bean>

eml.geohash5

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash5" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_5"/>
             <property name="converter" ref="geohashConverter_5"/>
     </bean>

eml.geohash6

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash6" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_6"/>
             <property name="converter" ref="geohashConverter_6"/>
     </bean>

eml.geohash7

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash7" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_7"/>
             <property name="converter" ref="geohashConverter_7"/>
     </bean>

eml.geohash8

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash8" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_8"/>
             <property name="converter" ref="geohashConverter_8"/>
     </bean>

eml.geohash9

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.geohash9" class="org.dataone.cn.indexer.parser.CommonRootSolrField" p:multivalue="true" p:root-ref="eml.geohashRoot">
             <constructor-arg name="name" value="geohash_9"/>
             <property name="converter" ref="geohashConverter_9"/>
     </bean>

eml.isService

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.isService" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="isService"/>
             <constructor-arg name="xpath" value="boolean(//software/implementation/distribution/online/url)"/>
     </bean>

eml.serviceTitle

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.serviceTitle" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="serviceTitle"/>
             <constructor-arg name="xpath" value="//software/title//text()[normalize-space()]"/>
             <property name="combineNodes" value="true"/>
             <property name="combineDelimiter" value=":"/>
     </bean>

eml.serviceDescription

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.serviceDescription" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="serviceDescription"/>
             <constructor-arg name="xpath" value="//software/abstract//text()[normalize-space()]"/>
             <property name="combineNodes" value="true"/>
             <property name="combineDelimiter" value=":"/>
     </bean>

eml.serviceEndpoint

<bean xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="eml.serviceEndpoint" class="org.dataone.cn.indexer.parser.SolrField">
             <constructor-arg name="name" value="serviceEndpoint"/>
             <constructor-arg name="xpath" value="//software/implementation/distribution/online/url/text()"/>
             <property name="multivalue" value="true"/>
     </bean>