Buggy code:
public class VexEditorMultiPage extends VexEditor { public static final String ID = "org.eclipse.wst.xml.vex.ui.internal.editor.VexEditorMultiPage" ; private Document domDoc = null ; public VexEditorMultiPage ( ) { } public void addVexEditorListener ( IVexEditorListener listener ) { } public void dispose ( ) { } public void doSave ( IProgressMonitor monitor ) { } public void doSaveAs ( ) { } public static Style findStyleForDoctype ( String publicId ) { } public DocumentType getDocumentType ( ) { } public Style getStyle ( ) { } public VexWidget getVexWidget ( ) { } public void gotoMarker ( IMarker marker ) { } public void init ( IEditorSite site , IEditorInput input ) throws PartInitException { } protected void loadInput ( ) { if ( ( this . vexWidget ) != null ) { this . vexEditorListeners . fireEvent ( "documentUnloaded" , new VexEditorMultiPageEvent ( this ) ) ; } this . loaded = false ; IEditorInput input = this . getEditorInput ( ) ; try { long start = System . currentTimeMillis ( ) ; IPath inputPath = null ; IModelManager modelManager = StructuredModelManager . getModelManager ( ) ; IStructuredDocument structuredDocument = null ; IStructuredModel model = null ; if ( input instanceof IFileEditorInput ) { inputPath = ( ( IFileEditorInput ) ( input ) ) . getFile ( ) . getRawLocation ( ) ; } else if ( input instanceof ILocationProvider ) { inputPath = ( ( ILocationProvider ) ( input ) ) . getPath ( input ) ; } else { String msg = MessageFormat . format ( Messages . getString ( "VexEditor.unknownInputClass" ) , new Object [ ] { input . getClass ( ) } ) ; this . showLabel ( msg ) ; return ; } <START_BUG> URL url = inputPath . toFile ( ) . toURL ( ) ; <END_BUG> DocumentReader reader = new DocumentReader ( ) ; reader . setDebugging ( this . debugging ) ; reader . setEntityResolver ( entityResolver ) ; reader . setWhitespacePolicyFactory ( wsFactory ) ; doctype = null ; doc = reader . read ( url ) ; if ( this . debugging ) { long end = System . currentTimeMillis ( ) ; System . out . println ( ( ( "Parsed<seq2seq4repair_space>document<seq2seq4repair_space>in<seq2seq4repair_space>" + ( end - start ) ) + "ms" ) ) ; } if ( input instanceof IFileEditorInput ) { IFile file = ( ( IFileEditorInput ) ( input ) ) . getFile ( ) ; model = modelManager . getModelForEdit ( file ) ; structuredDocument = model . getStructuredDocument ( ) ; } IDOMDocument domDocument = ( ( org . eclipse . wst . xml . core . internal . provisional . document . IDOMModel ) ( model ) ) . getDocument ( ) ; doc = new org . eclipse . wst . xml . vex . core . internal . dom . Document ( domDocument ) ; doc . setPublicID ( domDocument . getDoctype ( ) . getPublicId ( ) ) ; doc . setSystemID ( domDocument . getDoctype ( ) . getSystemId ( ) ) ; doc . setEncoding ( structuredDocument . getEncodingMemento ( ) . getJavaCharsetName ( ) ) ; doctype = DocumentType . getDocumentType ( doc . getPublicID ( ) ) ; wsFactory . getPolicy ( doc . getPublicID ( ) ) ; Validator validator = WTPVEXValidator . create ( doctype . getResourceUrl ( ) ) ; if ( validator != null ) { this . doc . setValidator ( validator ) ; if ( this . debugging ) { long end = System . currentTimeMillis ( ) ; System . out . println ( ( ( "Got<seq2seq4repair_space>validator<seq2seq4repair_space>in<seq2seq4repair_space>" + ( end - start ) ) + "ms" ) ) ; } } this . showVexWidget ( ) ; this . vexWidget . setDebugging ( debugging ) ; this . vexWidget . setDocument ( this . doc , this . style . getStyleSheet ( ) ) ; if ( this . updateDoctypeDecl ) { this . doc . setPublicID ( this . doctype . getPublicId ( ) ) ; ( ( org . eclipse . wst . xml . vex . core . internal . dom . Document ) ( this . doc ) ) . setSystemID ( this . doctype . getSystemId ( ) ) ; this . doSave ( null ) ; } this . loaded = true ; this . savedUndoDepth = this . vexWidget . getUndoDepth ( ) ; firePropertyChange ( PROP_DIRTY ) ; this . wasDirty = isDirty ( ) ; this . vexEditorListeners . fireEvent ( "documentLoaded" , new VexEditorMultiPageEvent ( this ) ) ; } catch ( SAXParseException ex ) { if ( ( ex . getException ( ) ) instanceof VexEditorMultiPage . NoRegisteredDoctypeException ) { String msg ; VexEditorMultiPage . NoRegisteredDoctypeException ex2 = ( ( VexEditorMultiPage . NoRegisteredDoctypeException ) ( ex . getException ( ) ) ) ; if ( ( ex2 . getPublicId ( ) ) == null ) { msg = Messages . getString ( "VexEditor.noDoctype" ) ; } else { msg = MessageFormat . format ( Messages . getString ( "VexEditor.unknownDoctype" ) , new Object [ ] { ex2 . getPublicId ( ) } ) ; } this . showLabel ( msg ) ; } else if ( ( ex . getException ( ) ) instanceof VexEditorMultiPage . NoStyleForDoctypeException ) { String msg = MessageFormat . format ( Messages . getString ( "VexEditor.noStyles" ) , new Object [ ] { this . doctype . getPublicId ( ) } ) ; this . showLabel ( msg ) ; } else { String file = ex . getSystemId ( ) ; if ( file == null ) { file = input . getName ( ) ; } String msg = MessageFormat . format ( Messages . getString ( "VexEditor.parseError" ) , new Object [ ] { Integer . valueOf ( ex . getLineNumber ( ) ) , file , ex . getLocalizedMessage ( ) } ) ; this . showLabel ( msg ) ;

Fix:
URL url = inputPath . toFile ( ) . toURI ( ) . toURL ( ) ;