Here's an MWE:
% SOT
\startbuffer[demo]
<html>
<body>
<div class="concurrent" data-title="Berth 5" data-location="San Diego">
Text Goes Here
</div>
<div class="concurrent" data-title="Road" data-location="Beale AFB">
Different Text Goes Here
</div>
</body>
</html>
\stopbuffer
\startxmlsetups xml:xhtml
\xmlsetsetup{\xmldocument}{*}{-}
\xmlsetsetup{\xmldocument}{html|body}{xml:*}
\xmlsetsetup{\xmldocument}{div}{xml:*}
\stopxmlsetups
\xmlregistersetup{xml:xhtml}
\startxmlsetups xml:html
\xmlflush{#1}
\stopxmlsetups
\startxmlsetups xml:body
\xmlflush{#1}
\stopxmlsetups
\startxmlsetups xml:div
\setvariable{div}{\xmlatt{#1}{class}}{#1}
\start[\xmlatt{#1}{class}]\xmlflush{#1}\stop
\stopxmlsetups
\definestartstop[concurrent][
before={TITLE: \xmlatt{\getvariable {div} {concurrent} {title}}},
]
\starttext
\xmlprocessbuffer{main}{demo}{}
\stoptext
% EOT
It doesn't look like the variables are taking, regardless of whether {title} or {data-title} are used.