+/* Called for open tags <foo bar="baz"> */
+static void
+_start_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error)
+{
+ VikGotoXmlTool *self = VIK_GOTO_XML_TOOL (user_data);
+ VikGotoXmlToolPrivate *priv = GOTO_XML_TOOL_GET_PRIVATE (self);
+ const GSList *stack = g_markup_parse_context_get_element_stack (context);
+ /* Longitude */
+ if (priv->lon_attr != NULL && isnan(priv->ll.lon) && stack_is_path (stack, priv->lon_path))
+ {
+ int i=0;
+ while (attribute_names[i] != NULL)
+ {
+ if (strcmp (attribute_names[i], priv->lon_attr) == 0)
+ {
+ priv->ll.lon = g_ascii_strtod(attribute_values[i], NULL);
+ }
+ i++;
+ }
+ }
+ /* Latitude */
+ if (priv->lat_attr != NULL && isnan(priv->ll.lat) && stack_is_path (stack, priv->lat_path))
+ {
+ int i=0;
+ while (attribute_names[i] != NULL)
+ {
+ if (strcmp (attribute_names[i], priv->lat_attr) == 0)
+ {
+ priv->ll.lat = g_ascii_strtod(attribute_values[i], NULL);
+ }
+ i++;
+ }
+ }
+}
+