def text_value(node):
    """
    Retrieves the text/xml string value for the provided
    node, this is a recursive approach and the child nodes
    are used as the entry point.

    :type node: Element
    :param node: The base element node from which the values
    are going to be retrieved.
    :rtype: String
    :return: The string/textual part of the xml element node
    provided.
    """
    nodes = node.childNodes
    data = []
    for node in nodes:
        if not node.nodeType == node.TEXT_NODE:
            continue
        data.append(node.data)
    return ''.join(data)
