port) + ")"
doc = CorpusDocumentX(docname)

processed_doc = False
for sentence in doc.sentences():
    words = " ".join([x.text for x in sentence])

    process_sentence = False
    for x in sentence:
        if not (ns('dcoi') + 'pos' in x.attrib or ns('dcoi') + 'lemma'
                in x.attrib or 'pos' in x.attrib or 'lemma' in x.attrib):
            process_sentence = True
    if process_sentence:
        processed_doc = True
        for i, (word, lemma, morph, pos) in enumerate(
                frogclient.process_aligned(words, 'iso-8859-15')):
            if word:
                try:
                    word_id = sentence[i].attrib[ns('xml') + 'id']
                except KeyError:
                    print >> sys.stderr, "ERROR: Unable to extract ID attribute!"
                    break
                except IndexError:
                    print >> sys.stderr, "ERROR: words out of sync in " + sentence.attrib[
                        ns('xml') + 'id'] + ': Unable to resolve word ' + str(
                            i + 1) + ': ' + word.encode(
                                'utf-8') + '. Source has ' + str(
                                    len(sentence)) + ' words.'
                    break
                if pos:
                    doc[word_id].attrib['pos'] = pos