What is the most general form of the Sturm oscillation theorem?

So far I have only seen cases that treat either unbounded intervals or weighted $L^2$ spaces. I would be especially interested in something that works for semi-bounded self-adjoint (Sturm-Liouville) operators $A:D(A)\to L^2_\rho([0,\infty))$ with some arbitrary weight $\rho$.

I am aware of the very approachable paper by Simon, I guess I could redo the same proof with weights but there are some parts in his proof that are still not entirely clear to me.