for( UrlRewriteFilterPathDescriptor selector : config.getSelectors() ) {
if( selector instanceof UrlRewriteFilterApplyDescriptor ) {
XPathExpression path = (XPathExpression)selector.compiledPath( XPATH_COMPILER );
Object node = path.evaluate( level.scopeNode, XPathConstants.NODE );
if( node != null ) {
UrlRewriteFilterApplyDescriptor apply = (UrlRewriteFilterApplyDescriptor)selector;
if( node instanceof Element ) {
Element element = (Element)node;
String value = element.getTextContent();
value = filterText( extractQName( element ), value, apply.rule() );
element.setTextContent( value );
} else if( node instanceof Text ) {
Text text = (Text)node;
String value = text.getWholeText();
value = filterText( extractQName( text.getParentNode() ), value, apply.rule() );
text.replaceWholeText( value );
} else if( node instanceof Attr ) {
Attr attr = (Attr)node;
String value = attr.getValue();
value = filterAttribute( extractQName( attr.getOwnerElement() ), extractQName( attr ), value, apply.rule() );
attr.setValue( value );
} else {
throw new IllegalArgumentException( RES.unexpectedSelectedNodeType( node ) );
}
}