@ Nonnull public PSSpan readSpanFromXML ( @ Nonnull final IMicroElement eSpan ) { final PSSpan ret = new PSSpan ( ) ; eSpan . forAllAttributes ( ( sNS , sAttrName , sVal ) -> { final String sAttrValue = _getAttributeValue ( sVal ) ; if ( sAttrName . equals ( CSchematronXML . ATTR_CLASS ) ) ret . setClazz ( sAttrValue ) ; else ret . addForeignAttribute ( sAttrName , sAttrValue ) ; } ) ; eSpan . forAllChildren ( aSpanChild -> { switch ( aSpanChild . getType ( ) ) { case TEXT : ret . addText ( ( ( IMicroText ) aSpanChild ) . getNodeValue ( ) ) ; break ; case ELEMENT : final IMicroElement eElement = ( IMicroElement ) aSpanChild ; if ( CSchematron . NAMESPACE_SCHEMATRON . equals ( eElement . getNamespaceURI ( ) ) ) { _warn ( ret , "Unsupported Schematron element '" + eElement . getLocalName ( ) + "'" ) ; } else ret . addForeignElement ( eElement . getClone ( ) ) ; break ; case COMMENT : // Ignore comments break ; default : _warn ( ret , "Unsupported child node: " + aSpanChild ) ; } } ) ; return ret ; }
Read a &lt ; span&gt ; element