*** empty log message ***
diff --git a/bundles/org.eclipse.wst.xsl.debug.ui/plugin.xml b/bundles/org.eclipse.wst.xsl.debug.ui/plugin.xml
index a15dac8..8a2ad66 100644
--- a/bundles/org.eclipse.wst.xsl.debug.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.xsl.debug.ui/plugin.xml
@@ -122,8 +122,8 @@
 	<extension point="org.eclipse.wst.sse.ui.breakpoint">
 		<breakpointContribution
 			id="org.eclipse.wst.xsl.debug.ui.providers">
-			<provider contentTypes="org.eclipse.wst.xml.core.xslsource"
-				class="org.eclipse.wst.xsl.internal.debug.ui.breakpoint.XSLBreakpointProvider:*xsl,*xslt"
+			<provider contentTypes="org.eclipse.wst.xml.core.xslsource,org.eclipse.wst.xml.core.xmlsource,org.eclipse.core.runtime.xml"
+				class="org.eclipse.wst.xsl.internal.debug.ui.breakpoint.XSLBreakpointProvider:*xsl,*xslt,*xml"
 				id="org.eclipse.wst.xsl.debug.ui.XSLBreakpointProvider" />
 		</breakpointContribution>
 	</extension>
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/internal/launching/XSLTLaunchConfigurationDelegate.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/internal/launching/XSLTLaunchConfigurationDelegate.java
index 6ba8f25..f4e3fd1 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/internal/launching/XSLTLaunchConfigurationDelegate.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/internal/launching/XSLTLaunchConfigurationDelegate.java
@@ -166,8 +166,13 @@
 				return sourceElement;
 			}});
 		
-		IDebugTarget target = new XSLDebugTarget(launch, launch.getProcesses()[0], launchHelper);
-		launch.addDebugTarget(target);
+//		IJavaDebugTarget javaTarget = (IJavaDebugTarget)launch.getDebugTarget();
+//		launch.removeDebugTarget(javaTarget);
+		IDebugTarget xslTarget = new XSLDebugTarget(launch, launch.getProcesses()[0], launchHelper);
+		launch.addDebugTarget(xslTarget);
+		
+	//	launch.addDebugTarget(new JavaXSLDebugTarget(launch, launch.getProcesses()[0], launchHelper, javaTarget));
+	//	launch.addDebugTarget(new JavaXSLDebugTarget(launch, launch.getProcesses()[0], launchHelper,javaTarget));
 	}
 
 	/**
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/IXSLDebugTarget.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/IXSLDebugTarget.java
new file mode 100644
index 0000000..3e9e554
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/IXSLDebugTarget.java
@@ -0,0 +1,21 @@
+package org.eclipse.wst.xsl.launching.model;
+
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IValue;
+
+public interface IXSLDebugTarget extends IDebugTarget
+{
+	XSLVariable getVariable(int varId) throws DebugException;
+
+	IStackFrame[] getStackFrames() throws DebugException;
+
+	void stepInto() throws DebugException;
+
+	void stepOver() throws DebugException;
+
+	void stepReturn() throws DebugException;
+
+	IValue getVariableValue(XSLVariable variable) throws DebugException;	
+}
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugElement.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugElement.java
index 3452008..9986558 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugElement.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugElement.java
@@ -10,112 +10,45 @@
  *******************************************************************************/
 package org.eclipse.wst.xsl.launching.model;
 
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.DebugElement;
 import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.wst.xsl.internal.launching.LaunchingPlugin;
+import org.eclipse.debug.core.model.IDisconnect;
+import org.eclipse.debug.core.model.ITerminate;
 
-public abstract class XSLDebugElement extends PlatformObject implements IDebugElement
+public abstract class XSLDebugElement extends DebugElement implements IDisconnect
 {
-	protected XSLDebugTarget debugTarget;
-
-	public XSLDebugElement(XSLDebugTarget target)
+	public XSLDebugElement(IDebugTarget target)
 	{
-		debugTarget = target;
+		super(target);
 	}
 
 	public String getModelIdentifier()
 	{
 		return IXSLConstants.ID_XSL_DEBUG_MODEL;
 	}
-
-	public IDebugTarget getDebugTarget()
-	{
-		return debugTarget;
-	}
-
-	public ILaunch getLaunch()
-	{
-		return getDebugTarget().getLaunch();
-	}
-
+	
 	@SuppressWarnings("unchecked")
 	@Override
-	public Object getAdapter(Class adapter)
-	{
-		if (adapter == IDebugElement.class)
-		{
-			return this;
-		}
-		else if (adapter == ILaunch.class)
-		{
-			return getLaunch();
+	public Object getAdapter(Class adapter) {
+		if (adapter == ITerminate.class) {
+			return getDebugTarget();
 		}
 		return super.getAdapter(adapter);
 	}
-
-	protected void abort(String message, Throwable e) throws DebugException
+	
+	public boolean canDisconnect()
 	{
-		if (!getDebugTarget().isTerminated())
-			getDebugTarget().getProcess().terminate();
-		throw new DebugException(new Status(IStatus.ERROR, LaunchingPlugin.PLUGIN_ID, DebugPlugin.INTERNAL_ERROR, message, e));
+		return getDebugTarget().canDisconnect();
 	}
-
-	/**
-	 * Fires a debug event
-	 * 
-	 * @param event
-	 *            the event to be fired
-	 */
-	protected void fireEvent(DebugEvent event)
+	
+	public void disconnect() throws DebugException
 	{
-		DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[]
-		{ event });
+		getDebugTarget().disconnect();
 	}
-
-	/**
-	 * Fires a <code>CREATE</code> event for this element.
-	 */
-	protected void fireCreationEvent()
+	
+	public boolean isDisconnected()
 	{
-		fireEvent(new DebugEvent(this, DebugEvent.CREATE));
-	}
-
-	/**
-	 * Fires a <code>RESUME</code> event for this element with the given
-	 * detail.
-	 * 
-	 * @param detail
-	 *            event detail code
-	 */
-	public void fireResumeEvent(int detail)
-	{
-		fireEvent(new DebugEvent(this, DebugEvent.RESUME, detail));
-	}
-
-	/**
-	 * Fires a <code>SUSPEND</code> event for this element with the given
-	 * detail.
-	 * 
-	 * @param detail
-	 *            event detail code
-	 */
-	public void fireSuspendEvent(int detail)
-	{
-		fireEvent(new DebugEvent(this, DebugEvent.SUSPEND, detail));
-	}
-
-	/**
-	 * Fires a <code>TERMINATE</code> event for this element.
-	 */
-	protected void fireTerminateEvent()
-	{
-		fireEvent(new DebugEvent(this, DebugEvent.TERMINATE));
+		return getDebugTarget().isDisconnected();
 	}
 }
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugTarget.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugTarget.java
index 5179baa..682b870 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugTarget.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLDebugTarget.java
@@ -49,7 +49,7 @@
 import org.eclipse.wst.xsl.launching.IProcessorInstall;
 import org.eclipse.wst.xsl.launching.config.LaunchHelper;
 
-public class XSLDebugTarget extends XSLDebugElement implements IDebugTarget
+public class XSLDebugTarget extends XSLDebugElement implements IXSLDebugTarget
 {
 	private final byte[] STACK_FRAMES_LOCK = new byte[0];
 	private final byte[] VALUE_MAP_LOCK = new byte[0];
@@ -83,7 +83,6 @@
 	{
 		super(null);
 		this.launch = launch;
-		this.debugTarget = this;
 		this.process = process;
 		this.requestSocket = attemptConnect(launchHelper.getRequestPort());
 		this.eventSocket = attemptConnect(launchHelper.getEventPort());
@@ -108,6 +107,13 @@
 			DebugPlugin.getDefault().getBreakpointManager().addBreakpointListener(this);
 		}
 	}
+
+    private void abort(String message, Throwable e) throws DebugException
+	{
+		if (!getDebugTarget().isTerminated())
+			getDebugTarget().getProcess().terminate();
+		throw new DebugException(new Status(IStatus.ERROR, LaunchingPlugin.PLUGIN_ID, DebugPlugin.INTERNAL_ERROR, message, e));
+	}
 	
 	private Socket attemptConnect(int port) throws CoreException
 	{
@@ -345,15 +351,18 @@
 
 	public boolean canDisconnect()
 	{
+		// TODO implement disconnect
 		return false;
 	}
 
 	public void disconnect() throws DebugException
 	{
+		// TODO implement disconnect
 	}
 
 	public boolean isDisconnected()
 	{
+		// TODO implement disconnect
 		return false;
 	}
 
@@ -408,7 +417,7 @@
 	/**
 	 * Returns the current stack frames in the target.
 	 */
-	protected IStackFrame[] getStackFrames() throws DebugException
+	public IStackFrame[] getStackFrames() throws DebugException
 	{
 		synchronized (STACK_FRAMES_LOCK)
 		{
@@ -498,22 +507,22 @@
 	/**
 	 * Single step the interpreter.
 	 */
-	protected void stepOver() throws DebugException
+	public void stepOver() throws DebugException
 	{
 		sendRequest(DebugConstants.REQUEST_STEP_OVER);
 	}
 
-	protected void stepInto() throws DebugException
+	public void stepInto() throws DebugException
 	{
 		sendRequest(DebugConstants.REQUEST_STEP_INTO);
 	}
 
-	protected void stepReturn() throws DebugException
+	public void stepReturn() throws DebugException
 	{
 		sendRequest(DebugConstants.REQUEST_STEP_RETURN);
 	}
 
-	XSLVariable getVariable(int varId) throws DebugException
+	public XSLVariable getVariable(int varId) throws DebugException
 	{
 		synchronized (variableMapCache)
 		{
@@ -531,24 +540,32 @@
 		}
 	}
 
-	IValue getVariableValue(XSLVariable variable) throws DebugException
+	public IValue getVariableValue(XSLVariable variable) throws DebugException
 	{
 		synchronized (VALUE_MAP_LOCK)
 		{
 			XSLValue value = (XSLValue) valueMapCache.get(variable);
-			if (value == null && isSuspended())
+			if (value == null)
 			{
-				String res = sendRequest(DebugConstants.REQUEST_VALUE + " " + variable.getId());
-				String[] data = res.split("&");
-				String type = data[0];
-				String theval;
-				if (data.length > 1)
-					theval = data[1];
+				if (isSuspended())
+				{
+					String res = sendRequest(DebugConstants.REQUEST_VALUE + " " + variable.getId());
+					String[] data = res.split("&");
+					String type = data[0];
+					String theval;
+					if (data.length > 1)
+						theval = data[1];
+					else
+						theval = "";
+					value = new XSLValue(this, type, theval);
+					valueMapCache.put(variable, value);
+				}
 				else
-					theval = "";
-				value = new XSLValue(this, type, theval);
+				{
+					// anything as long as not null!
+					value = new XSLValue(this, "G", "");
+				}
 			}
-			valueMapCache.put(variable, value);
 			return value;
 		}
 	}
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLStackFrame.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLStackFrame.java
index 1c5cfa5..8e0ae1a 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLStackFrame.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLStackFrame.java
@@ -15,6 +15,7 @@
 
 import org.eclipse.core.runtime.Path;
 import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IRegisterGroup;
 import org.eclipse.debug.core.model.IStackFrame;
 import org.eclipse.debug.core.model.IThread;
@@ -35,12 +36,12 @@
 
 	public XSLStackFrame(XSLThread thread, String data, int index)
 	{
-		super((XSLDebugTarget) thread.getDebugTarget());
+		super(thread.getDebugTarget());
 		this.xslThread = thread;
-		init(data,(XSLDebugTarget) thread.getDebugTarget());
+		init(data,(IXSLDebugTarget) thread.getDebugTarget());
 	}
 
-	private void init(String data,XSLDebugTarget debugTarget)
+	private void init(String data,IXSLDebugTarget debugTarget)
 	{
 
 		String[] strings = data.split("\\|");
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLThread.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLThread.java
index 81cf88d..1c4d899 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLThread.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLThread.java
@@ -12,6 +12,7 @@
 
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IStackFrame;
 import org.eclipse.debug.core.model.IThread;
 
@@ -31,7 +32,7 @@
 	/**
 	 * Constructs a new thread for the given target
 	 */
-	public XSLThread(XSLDebugTarget target)
+	public XSLThread(IDebugTarget target)
 	{
 		super(target);
 	}
@@ -40,7 +41,7 @@
 	{
 		if (isSuspended())
 		{
-			return ((XSLDebugTarget) getDebugTarget()).getStackFrames();
+			return ((IXSLDebugTarget) getDebugTarget()).getStackFrames();
 		}
 		else
 		{
@@ -142,17 +143,17 @@
 
 	public void stepInto() throws DebugException
 	{
-		((XSLDebugTarget) getDebugTarget()).stepInto();
+		((IXSLDebugTarget) getDebugTarget()).stepInto();
 	}
 
 	public void stepOver() throws DebugException
 	{
-		((XSLDebugTarget) getDebugTarget()).stepOver();
+		((IXSLDebugTarget) getDebugTarget()).stepOver();
 	}
 
 	public void stepReturn() throws DebugException
 	{
-		((XSLDebugTarget) getDebugTarget()).stepReturn();
+		((IXSLDebugTarget) getDebugTarget()).stepReturn();
 	}
 
 	public boolean canTerminate()
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLValue.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLValue.java
index 1e27958..ff64fde 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLValue.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLValue.java
@@ -11,6 +11,7 @@
 package org.eclipse.wst.xsl.launching.model;
 
 import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IValue;
 import org.eclipse.debug.core.model.IVariable;
 
@@ -19,7 +20,7 @@
 	private final String fValue;
 	private final String type;
 
-	public XSLValue(XSLDebugTarget target, String type, String value)
+	public XSLValue(IDebugTarget target, String type, String value)
 	{
 		super(target);
 		this.type = type;
diff --git a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLVariable.java b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLVariable.java
index 7aaae35..c36ccea 100644
--- a/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLVariable.java
+++ b/bundles/org.eclipse.wst.xsl.launching/src/org/eclipse/wst/xsl/launching/model/XSLVariable.java
@@ -11,6 +11,7 @@
 package org.eclipse.wst.xsl.launching.model;
 
 import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IValue;
 import org.eclipse.debug.core.model.IVariable;
 
@@ -25,7 +26,7 @@
 	private String scope;
 	private String type;
 
-	public XSLVariable(XSLDebugTarget target, int id)
+	public XSLVariable(IDebugTarget target, int id)
 	{
 		super(target);
 		this.id = id;
@@ -38,7 +39,7 @@
 
 	public IValue getValue() throws DebugException
 	{
-		return ((XSLDebugTarget) getDebugTarget()).getVariableValue(this);
+		return ((IXSLDebugTarget) getDebugTarget()).getVariableValue(this);
 	}
 	
 	public void setName(String name)
diff --git a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanRootStyleFrame.java b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanRootStyleFrame.java
index 1c08358..3f464fb 100644
--- a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanRootStyleFrame.java
+++ b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanRootStyleFrame.java
@@ -60,7 +60,7 @@
 
 	public Variable getVariable(int id)
 	{
-		log.debug("Getting variable with id "+id+" from variables "+variables.size());
+//		log.debug("Getting variable with id "+id+" from variables "+variables.size());
 		return (Variable)variables.get(new Integer(id));
 	}
 
diff --git a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanStyleFrame.java b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanStyleFrame.java
index 3ce0b63..761ea98 100644
--- a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanStyleFrame.java
+++ b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanStyleFrame.java
@@ -13,11 +13,12 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Stack;
 
+import javax.xml.transform.SourceLocator;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.xalan.templates.ElemCallTemplate;
@@ -25,11 +26,13 @@
 import org.apache.xalan.templates.ElemTemplateElement;
 import org.apache.xalan.templates.ElemVariable;
 import org.apache.xalan.trace.TracerEvent;
+import org.apache.xml.dtm.ref.DTMNodeProxy;
 import org.apache.xml.utils.QName;
 import org.apache.xpath.VariableStack;
 import org.apache.xpath.XPath;
 import org.eclipse.wst.xsl.debugger.StyleFrame;
 import org.eclipse.wst.xsl.debugger.Variable;
+import org.w3c.dom.Node;
 
 public class XalanStyleFrame extends StyleFrame
 {
@@ -46,13 +49,13 @@
 		super(parent);
 		this.event = event;
 		if (parent != null)
-			this.varNames = new HashMap(((XalanStyleFrame)parent).varNames);
+			this.varNames = new HashMap(((XalanStyleFrame) parent).varNames);
 		else
 			this.varNames = new HashMap();
 		pushElement(event);
 		findRootStyleFrame();
 	}
-	
+
 	private void findRootStyleFrame()
 	{
 		XalanStyleFrame frame = this;
@@ -60,7 +63,8 @@
 		{
 			if (frame instanceof XalanRootStyleFrame)
 				rootStyleFrame = (XalanRootStyleFrame) frame;
-		} while ((frame = (XalanStyleFrame) frame.getParent()) != null);
+		}
+		while ((frame = (XalanStyleFrame) frame.getParent()) != null);
 	}
 
 	public String getFilename()
@@ -115,7 +119,7 @@
 		currentLine = e.m_styleNode.getLineNumber();
 		eventStack.push(e);
 		if (log.isDebugEnabled())
-			log.debug("Pushed element " + TracerEvent.printNode(e.m_styleNode)+" at line "+currentLine);
+			log.debug("Pushed element " + TracerEvent.printNode(e.m_styleNode) + " at line " + currentLine);
 	}
 
 	public TracerEvent popElement()
@@ -123,7 +127,7 @@
 		TracerEvent e = (TracerEvent) eventStack.pop();
 		currentLine = e.m_styleNode.getEndLineNumber();
 		if (log.isDebugEnabled())
-			log.debug("Popped element " + TracerEvent.printNode(e.m_styleNode)+" at line "+currentLine);
+			log.debug("Popped element " + TracerEvent.printNode(e.m_styleNode) + " at line " + currentLine);
 
 		ElemTemplateElement element = e.m_styleNode;
 		String name = element.getNodeName();
@@ -145,9 +149,9 @@
 	{
 		String scope = variable.getIsTopLevel() ? Variable.GLOBAL_SCOPE : Variable.LOCAL_SCOPE;
 		VariableStack vs = event.m_processor.getXPathContext().getVarStack();
-		XalanVariable xvar = new XalanVariable(this,vs, scope, variable.getIndex(), variable);
+		XalanVariable xvar = new XalanVariable(this, vs, scope, variable.getIndex(), variable);
 		rootStyleFrame.addVariable(xvar);
-		varNames.put(variable.getName(),xvar);
+		varNames.put(variable.getName(), xvar);
 	}
 
 	private List getLocals()
@@ -162,4 +166,32 @@
 	{
 		return rootStyleFrame.getGlobals();
 	}
+
+	public String getSourceFilename()
+	{
+		SourceLocator locator = getSourceLocator();
+		if (locator != null)
+			return locator.getSystemId();
+		return "";
+	}
+
+	public int getSourceCurrentLine()
+	{
+		SourceLocator locator = getSourceLocator();
+		if (locator != null)
+			return locator.getLineNumber();
+		return 0;
+	}
+	
+	private SourceLocator getSourceLocator()
+	{
+		Node sourceNode = event.m_sourceNode;
+        SourceLocator locator = null;
+		if (sourceNode instanceof DTMNodeProxy)
+		{
+			int nodeHandler = ((DTMNodeProxy) sourceNode).getDTMNodeNumber();
+			return ((DTMNodeProxy) sourceNode).getDTM().getSourceLocatorFor(nodeHandler);
+		}
+		return null;
+	}
 }
diff --git a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanTraceListener.java b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanTraceListener.java
index 1b8e7a0..8d3a446 100644
--- a/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanTraceListener.java
+++ b/bundles/org.eclipse.wst.xsl.xalan/src-debugger/org/eclipse/wst/xsl/xalan/debugger/XalanTraceListener.java
@@ -105,9 +105,15 @@
 		debugger.checkStopped();
 		if (styleFrame!=null)
 		{
+			// check breakpoint in stylesheet
 			BreakPoint breakpoint = new BreakPoint(styleFrame.getFilename(), styleFrame.getCurrentLine());
 			debugger.checkSuspended(styleFrame, breakpoint);
-		}
+			// TODO check breakpoint in source
+/*			breakpoint = new BreakPoint(styleFrame.getSourceFilename(), styleFrame.getSourceCurrentLine());
+			System.out.println("---------------"+breakpoint);
+			if (breakpoint.getFile() != null)
+				debugger.checkSuspended(styleFrame, breakpoint);
+*/		}
 	}
 
 	public void selected(SelectionEvent ev) throws TransformerException