Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Übersicht | Auflistung der Dateien | Elemente eines Namensbereiches | Datenstruktur-Elemente | Datei-Elemente

psfa::UnitSax2ContentHandler Klassenreferenz

Der Sax2-Content-Handler der Einheiten. Mehr...

#include <psfa/UnitSax2ContentHandler.hpp>

Aufstellung aller Elemente

Öffentliche Methoden

 UnitSax2ContentHandler (const std::string pool, std::vector< IndexData_SP > &dataList)
 ~UnitSax2ContentHandler ()
virtual void characters (const XMLCh *const chars, const unsigned int length)
virtual void endDocument ()
virtual void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
virtual void ignorableWhitespace (const XMLCh *const chars, const unsigned int length)
virtual void processingInstruction (const XMLCh *const target, const XMLCh *const data)
virtual void setDocumentLocator (const xercesc::Locator *locator)
virtual void startDocument ()
virtual void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const xercesc::Attributes &attrs)
virtual void startPrefixMapping (const XMLCh *const prefix, const XMLCh *const uri)
virtual void endPrefixMapping (const XMLCh *const prefix)
virtual void skippedEntity (const XMLCh *const name)
void setFileName (const std::string name)

Private Typen

enum  Mode { start, unit, index }
 Der interne Zustand beim Parsen. Mehr...


Private Attribute

Mode mode_
 der Zustand

const xercesc::Locator * locator_
 das locator-Objekt des Parsers

std::string pool_
 der Pool

std::string aktFile_
 der aktuelle Dateiname

std::string aktUnit_
 die aktuelle Einheit

std::string aktKontext_
 der aktuelle Kontext

std::vector< IndexData_SP > & dataList_
 der Container mit den Indizierungsergebnissen

std::vector< std::string > tagNames_
 die Such-Tags

std::vector< std::string > kontextNames_
 die Kontext-Tags

std::string unitTag_
 der Name des eindeutigen Tag-Namens, der eine Einheit kennzeichnet

IndexData_SP indexData_
 die aktuellen Indizierungdaten


Ausführliche Beschreibung

Der Sax2-Content-Handler der Einheiten.

Definiert in Zeile 37 der Datei UnitSax2ContentHandler.hpp.


Dokumentation der Aufzählungstypen

enum psfa::UnitSax2ContentHandler::Mode [private]
 

Der interne Zustand beim Parsen.

Aufzählungswerte:
start  es wird auf eine Einheit oder ein Such-Tag gewartet
unit  eine Einheit wurde gefunden
index  ein Suchtag wurde gefunden

Definiert in Zeile 104 der Datei UnitSax2ContentHandler.hpp.

00104               { start,     
00106       unit,    
00107       index    
00108     };


Beschreibung der Konstruktoren und Destruktoren

psfa::UnitSax2ContentHandler::UnitSax2ContentHandler const std::string  pool,
std::vector< IndexData_SP > &  dataList
 

Parameter:
pool der Name des Pools
dataList der Container für die Ergebnisse.

Definiert in Zeile 29 der Datei UnitSax2ContentHandler.cpp.

Benutzt psfa::Config::getConfigValue(), kontextNames_, pool_, psfahelper::splitString(), tagNames_ und unitTag_.

00032   : mode_(start),
00033     locator_(0),
00034     pool_(pool),
00035     aktFile_(""),
00036     aktUnit_(""),
00037     aktKontext_(""),
00038     dataList_(dataList)
00039 {
00040   using psfahelper::splitString;
00041   
00042   Config* conf = Config::getConfig();
00043   splitString( conf->getConfigValue( pool,  "tags" ),
00044           tagNames_ );
00045   splitString( conf->getConfigValue( pool,  "kontexts" ),
00046           kontextNames_ );
00047   unitTag_ = conf->getConfigValue( pool_,  "unitTag" );
00048 
00049 }

psfa::UnitSax2ContentHandler::~UnitSax2ContentHandler  ) 
 

Definiert in Zeile 53 der Datei UnitSax2ContentHandler.cpp.

00054 {
00055     
00056     
00057 }


Dokumentation der Elementfunktionen

void psfa::UnitSax2ContentHandler::characters const XMLCh *const   chars,
const unsigned int  length
[virtual]
 

Definiert in Zeile 62 der Datei UnitSax2ContentHandler.cpp.

Benutzt aktUnit_, index, indexData_, locator_, mode_, psfahelper::onlyWhiteSpace(), psfahelper::stripWhiteSpace(), unit und XMLCh.

00064 {
00065   using xercesc::XMLString;
00066   using psfahelper::onlyWhiteSpace;
00067   using psfahelper::stripWhiteSpace;
00068     
00069   switch( mode_ ) {
00070   case index:
00071     {
00072       std::string content( chars, chars+length);
00073       bool ignore = onlyWhiteSpace( content );
00074       if( ignore ) {
00075    indexData_->content = "";
00076       }
00077       else {
00078    indexData_->content = stripWhiteSpace( content );
00079       }
00080       indexData_->lineStop = locator_->getLineNumber();
00081       indexData_->columnStop = locator_->getColumnNumber();
00082     }
00083     break;
00084   case unit:
00085     {
00086       std::string content(chars, chars+length);
00087       bool ignore = psfahelper::onlyWhiteSpace( content );
00088       if( ignore ) {
00089    aktUnit_ = "Einheit ohne Namen";
00090       }
00091       else {
00092    aktUnit_ = stripWhiteSpace( content );
00093       }
00094     }
00095     break;
00096   default:
00097     break;
00098   }
00099   return;
00100 }

void psfa::UnitSax2ContentHandler::endDocument  )  [virtual]
 

Definiert in Zeile 105 der Datei UnitSax2ContentHandler.cpp.

00106 {
00107 
00108 }

void psfa::UnitSax2ContentHandler::endElement const XMLCh *const   uri,
const XMLCh *const   localname,
const XMLCh *const   qname
[virtual]
 

Definiert in Zeile 113 der Datei UnitSax2ContentHandler.cpp.

Benutzt dataList_, index, indexData_, mode_, start, unit und XMLCh.

00116 {
00117   switch( mode_ ) {
00118   case index:
00119     dataList_.push_back( indexData_ );
00120     mode_ = start;
00121     break;
00122   case unit:
00123     mode_ = start;
00124     break;
00125   default:
00126     break;
00127   }
00128   return;
00129 }

void psfa::UnitSax2ContentHandler::endPrefixMapping const XMLCh *const   prefix  )  [virtual]
 

Definiert in Zeile 239 der Datei UnitSax2ContentHandler.cpp.

Benutzt XMLCh.

00240 {
00241     
00242     
00243 }

void psfa::UnitSax2ContentHandler::ignorableWhitespace const XMLCh *const   chars,
const unsigned int  length
[virtual]
 

Definiert in Zeile 134 der Datei UnitSax2ContentHandler.cpp.

Benutzt XMLCh.

00136 {
00137 
00138 }

void psfa::UnitSax2ContentHandler::processingInstruction const XMLCh *const   target,
const XMLCh *const   data
[virtual]
 

Definiert in Zeile 143 der Datei UnitSax2ContentHandler.cpp.

Benutzt XMLCh.

00145 {
00146     
00147 }

void psfa::UnitSax2ContentHandler::setDocumentLocator const xercesc::Locator *  locator  )  [virtual]
 

Definiert in Zeile 152 der Datei UnitSax2ContentHandler.cpp.

Benutzt locator_.

00153 {
00154   locator_ = locator;
00155   return;
00156 }

void psfa::UnitSax2ContentHandler::setFileName const std::string  name  ) 
 

Definiert in Zeile 255 der Datei UnitSax2ContentHandler.cpp.

Benutzt aktFile_.

Wird benutzt von psfa::UnitParser::parse().

00256 {
00257   aktFile_ = name;
00258   return;
00259 }

void psfa::UnitSax2ContentHandler::skippedEntity const XMLCh *const   name  )  [virtual]
 

Definiert in Zeile 248 der Datei UnitSax2ContentHandler.cpp.

Benutzt XMLCh.

00249 {
00250     
00251 }

void psfa::UnitSax2ContentHandler::startDocument  )  [virtual]
 

Definiert in Zeile 161 der Datei UnitSax2ContentHandler.cpp.

00162 {
00163     
00164 }

void psfa::UnitSax2ContentHandler::startElement const XMLCh *const   uri,
const XMLCh *const   localname,
const XMLCh *const   qname,
const xercesc::Attributes &  attrs
[virtual]
 

Definiert in Zeile 169 der Datei UnitSax2ContentHandler.cpp.

Benutzt aktFile_, aktKontext_, aktUnit_, psfahelper::getXMLChLength(), index, indexData_, psfa::IndexData_SP, kontextNames_, locator_, mode_, start, psfahelper::stripWhiteSpace(), psfa::sVec, tagNames_, unit, unitTag_ und XMLCh.

00173 {
00174   using std::string;
00175   using std::vector;
00176   using std::find;
00177   using psfahelper::getXMLChLength;
00178   using psfahelper::stripWhiteSpace;
00179   typedef vector< string > sVec;
00180   
00181   string::size_type i = getXMLChLength( qname );
00182   string tagName( qname, qname + i );
00183   if( unitTag_ == tagName ) {
00184     mode_ = unit;
00185     return;
00186   }
00187   
00188   sVec::iterator nEnd = kontextNames_.end();
00189   sVec::iterator match = find( kontextNames_.begin(),
00190                 nEnd,
00191                 tagName );
00192   if( match != nEnd ) {
00193     aktKontext_ = tagName;
00194     return;
00195   }
00196 
00197   nEnd   = tagNames_.end();
00198   match  = find( tagNames_.begin(), nEnd, tagName );
00199   if( match != nEnd && mode_ == start ) {
00200     indexData_ = IndexData_SP( new IndexData );
00201     indexData_->file = aktFile_;
00202     indexData_->unit = aktUnit_;
00203     indexData_->kontext = aktKontext_;
00204     indexData_->tag = tagName;
00205     unsigned int l = attrs.getLength();
00206     if( l != 0 ) {
00207       for( unsigned int i = 0; i < l; ++i ) {
00208    const XMLCh* const aName  = attrs.getLocalName( i );
00209    const XMLCh* const aValue = attrs.getValue( i );
00210    string::size_type s = getXMLChLength( aName );
00211    string name( aName, aName + s );
00212    s = getXMLChLength( aValue );
00213    string value( aValue, aValue + s );
00214    AttMap::value_type att( stripWhiteSpace( name ),
00215             stripWhiteSpace( value ) 
00216             );
00217    indexData_->attributes.insert( att );
00218       }
00219     }
00220     indexData_->lineStart = locator_->getLineNumber();
00221     indexData_->columnStart = locator_->getColumnNumber();
00222     mode_ = index;
00223   }
00224   return;
00225 }

void psfa::UnitSax2ContentHandler::startPrefixMapping const XMLCh *const   prefix,
const XMLCh *const   uri
[virtual]
 

Definiert in Zeile 230 der Datei UnitSax2ContentHandler.cpp.

Benutzt XMLCh.

00232 {
00233     
00234 }


Dokumentation der Datenelemente

std::string psfa::UnitSax2ContentHandler::aktFile_ [private]
 

der aktuelle Dateiname

Definiert in Zeile 116 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von setFileName() und startElement().

std::string psfa::UnitSax2ContentHandler::aktKontext_ [private]
 

der aktuelle Kontext

Definiert in Zeile 120 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von startElement().

std::string psfa::UnitSax2ContentHandler::aktUnit_ [private]
 

die aktuelle Einheit

Definiert in Zeile 118 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von characters() und startElement().

std::vector< IndexData_SP >& psfa::UnitSax2ContentHandler::dataList_ [private]
 

der Container mit den Indizierungsergebnissen

Definiert in Zeile 122 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von endElement().

IndexData_SP psfa::UnitSax2ContentHandler::indexData_ [private]
 

die aktuellen Indizierungdaten

Definiert in Zeile 132 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von characters(), endElement() und startElement().

std::vector<std::string> psfa::UnitSax2ContentHandler::kontextNames_ [private]
 

die Kontext-Tags

Definiert in Zeile 127 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von startElement() und UnitSax2ContentHandler().

const xercesc::Locator* psfa::UnitSax2ContentHandler::locator_ [private]
 

das locator-Objekt des Parsers

Definiert in Zeile 112 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von characters(), setDocumentLocator() und startElement().

Mode psfa::UnitSax2ContentHandler::mode_ [private]
 

der Zustand

Definiert in Zeile 110 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von characters(), endElement() und startElement().

std::string psfa::UnitSax2ContentHandler::pool_ [private]
 

der Pool

Definiert in Zeile 114 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von UnitSax2ContentHandler().

std::vector<std::string> psfa::UnitSax2ContentHandler::tagNames_ [private]
 

die Such-Tags

Definiert in Zeile 125 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von startElement() und UnitSax2ContentHandler().

std::string psfa::UnitSax2ContentHandler::unitTag_ [private]
 

der Name des eindeutigen Tag-Namens, der eine Einheit kennzeichnet

Definiert in Zeile 129 der Datei UnitSax2ContentHandler.hpp.

Wird benutzt von startElement() und UnitSax2ContentHandler().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon Jul 12 11:45:09 2004 für PSFA von doxygen 1.3.4