void ServerXMLParser::endElement(const XMLElementDecl& elemDecl,
                                 const unsigned int urlId,
                                 const bool isRoot,
                                 const XMLCh *const elemPrefix)
{
    XercesDOMParser::endElement(elemDecl, urlId, isRoot, elemPrefix);

    // Track the line number in the DOMNode for later use
    int lineNumber = getScanner()->getLocator()->getLineNumber();
    DOMNode *node = getCurrentNode();
    if (node != NULL)
        node->setUserData(lastLineNumberKey, (void *)lineNumber, NULL);
}
void ServerXMLParser::startElement(const XMLElementDecl& elemDecl,
                                   const unsigned int urlId,
                                   const XMLCh *const elemPrefix,
                                   const RefVectorOf< XMLAttr >& attrList,
                                   const unsigned int attrCount,
                                   const bool isEmpty,
                                   const bool isRoot)
{
    XercesDOMParser::startElement(elemDecl, urlId, elemPrefix, attrList, attrCount, isEmpty, isRoot);

    // Track the line number in the DOMNode for later use
    int lineNumber = getScanner()->getLocator()->getLineNumber();
    DOMNode *node = getCurrentNode();
    if (node != NULL)
        node->setUserData(firstLineNumberKey, (void *)lineNumber, NULL);
}