Просто для удовольствия, один вкладыш с XPath 2.0:
tokenize(replace(replace(concat(string-join((//text()[not(parent::span)][normalize-space()])[position()<last()]|//span[@itemtype],","),replace((//text()[not(parent::span)][normalize-space()])[last()],"\W$","")),"\W+",","),replace(//span[@itemtype]/text(),"\W+",","),//span[@itemtype]/text()),",+")
Вывод: