private void treeWalk(Element rootElement, Set<String> set) {
            for ( final Element element : rootElement.elements() ) {
                final String value = element.getTextTrim();
                if ( value != null && !value.isEmpty()) {
                    final Matcher matcher = PATTERN.matcher(value);
                    while (matcher.find()) {
                        final String match = matcher.group(2);
                        Log.trace("Found attribute '{}'", match);
                        set.add(match);
                    }
                }
                treeWalk(element, set);
            }
        }
Class to hold a <code>Document</code> representation of a vcard mapping
and unique attribute placeholders. Used by <code>VCard</code> to apply
a <code>Map</code> of ldap attributes to ldap values via
<code>MessageFormat</code>

@author rkelly
xmppserver/src/main/java/org/jivesoftware/openfire/ldap/LdapVCardProvider.java