Проблемы проверки схемы GPX - PullRequest
2 голосов
/ 29 ноября 2011

Я создаю приложение, которое работает в основном с файлами GPX в качестве входных данных.Учитывая тот факт, что файлы gpx должны определяться схемой gpx (как определено здесь: http://www.topografix.com/gpx.asp),, первое, что я научил разумно делать с моим приложением, это проверить входной файл по схеме (с учетомконечно, разные версии). Пока все хорошо. Для исходных файлов, которые я тестировал, все было идеально. Однако иногда я использую файлы .gpx, которые оказываются недопустимыми для соответствующей схемы gpx. Итак, я былпытаясь импортировать их с помощью других подобных инструментов и, как ни странно, не было возвращено никакой ошибки, и файл был проанализирован на отлично. Итак, наиболее логичный вывод заключается в том, что есть проблема с моим кодом. Однако после тщательного изучения мой код был полностью в порядкеи никаких проблем с ним в настоящее время не было. Это было даже подтверждено предложенной техникой проверки от topografix.com (http://www.topografix.com/gpx_validation.asp), и он снова пришел к выводу, что файл недействителен.

Итак, получаетсячто есть некоторые устройства GPS / системы записи GPS / и т. д., которыесоздавать файлы .gpx без соответствия официальной схеме GPX.Эти выводы заставляют меня задать вопрос: ПОЧЕМУ?Я серьезно не понимаю идею, стоящую за этим.Кроме того, с большинством недействительных файлов, которые я обнаружил, проблема не в том, что может рассматриваться как дополнительная функция, а в том, чтобы не следовать правильному порядку с потомками некоторых элементов, которые я считаю абсолютно глупыми.

Это заставляет меня задать вам два вопроса.Во-первых, я был бы рад, если бы кто-то мог объяснить мне, почему многие файлы GPX, которые я нашел в Интернете, не соответствуют официальной схеме GPX.Во-вторых, я хотел бы спросить вас, как вы справляетесь с этой проблемой, если вы собираетесь анализировать файлы GPX.В конце концов, точки отслеживания будут в любом случае находиться в файле, так что мне просто нужно игнорировать проверку схемы XML и продолжать прямой анализ?Но опять же, если имя атрибута с ошибкой введено, моя система зависнет.Будем очень благодарны за любую информацию о том, как вы справляетесь с разбором файлов GPS.

Спасибо за ваше время и помощь.

С уважением,

Петар

РЕДАКТИРОВАТЬ: Я разместил новую ветку: Шаблоны синтаксического анализа GPX и "стандарты" , где я спрашиваю, как люди на самом деле анализируют файлы GPX на практике.Если у вас есть идея, пожалуйста, оставьте свой ответ там.

Ответы [ 5 ]

2 голосов
/ 29 ноября 2011

Авторы схемы решили использовать <xs:sequence> вместо <xs:all>.Последовательности XSD зависят от порядка.

Имя атрибута с ошибкой введено неверно.Вы должны подтвердить и потерпеть неудачу изящно.Компьютеры не справляются с неопределенностью.

Надеюсь, это поможет ...

ОБНОВЛЕНИЕ:

Извините, позвольте мне уточнить это.Задача была создана авторами схемы И авторами выходов GPX (различных пакетов программ и устройств).

В принципе, если человек может посмотреть на часть данных и понять, что это значит, ответственность за реализацию гибкой проверки лежит на программном обеспечении, позволяющем использовать программу.

Например,Предположим, у вас есть поле ввода, в которое вы должны ввести сумму в долларах, и пользователь вводит «$ .05», программное обеспечение должно быть достаточно умным, чтобы распознавать его как 5 центов, и достаточно умным, чтобы понимать, что впереди есть местои это бесполезно.

То же самое относится к файлам с устройства.Да, проблема была создана ими.Да, смешно рассматривать выход с устройства как пользовательский ввод, когда для этого формата есть строгое четкое определение.Но это проблема, с которой вы сейчас столкнулись.И в конце концов, никого не волнует, какие технические проблемы вам пришлось преодолеть, чтобы заставить его работать.Все, что их волнует, это «работает ли это» и «насколько это полезно для меня».

Итак, если вы видите, что поля не в порядке, но в противном случае все необходимые данные присутствуют, переставьтеполя, чтобы они прошли проверку.Сделайте ваш импорт гибким.Заполните пробелы в данных предупреждающим сообщением, если пропуски отсутствуют.Но сделайте так, чтобы это работало.

Помимо попытки массировать данные перед проверкой их на соответствие XSD, вы можете сделать еще одну вещь, если обнаружите, что ошибки проверки постоянно вызываются простым упорядочением полей (что является распространенным заблуждением в XSD между xs: sequence и xs: all), это изменить ваш XSD.Переключите это от последовательности ко всем.Вы можете сначала попробовать официальный XSD.Если это пройдет, то вам не придется проверять более слабые версии.

Надеюсь, это поможет ...

0 голосов
/ 09 марта 2012

Как уже отмечал Homer6, одной из проблем является последовательность тегов в файле XML.

Прежде чем продолжить, обратите внимание, что GPX 1.0 и GPX 1.1 очень разные.Большинство приложений производят / потребляют GPX 1.0.Например, в версии 1.0 для электронной почты есть регулярное выражение:

[\p{L}_]+(\.[\p{L}_]+)*@[\p{L}_]+(\.[\p{L}_]+)

Если в каком-либо приложении есть текстовое поле с просьбой ввести свой электронный адрес (который будет сохранен позжефайл GPX) это должно быть довольно строго по этому поводу.Если пользователь вводит «name AT gmail.com», полученный файл GPX является недействительным.

Схема для файла XML очень жесткая.Большинство разработчиков приложений не хотят одинаковых проверок, когда их пользователи вводят данные, которые будут храниться в файле GPX.И именно поэтому большинство файлов не являются правильными файлами GPX.Кроме того, именно поэтому большинство приложений для анализа игнорируют эти строгие правила.

0 голосов
/ 27 января 2012

проблема со схемами, как вы хорошо заметили, заключается в том, что не все реализации стандартизированы, а некоторые являются проприетарными. в этих случаях лучше всего импортировать файл в программу и сохранить его как GPX (даже если оригинал был GPX).

Я использую бесплатную программу под названием GPS TRACKMAKER, которая открывается из различных форматов, включая GPX, и сохраняет их. Он также загружает данные напрямую с различных портативных устройств GPS (garmin, magellan и т. Д.). скачать GPSTM http://www.gpstm.com/dwlpage.php

в связанной статье, я загрузил разборчивый php dom с GPX, который работает довольно хорошо (100% совместимость с GPX, сгенерированным GPSTM)

Спасибо Odilon Ferreira Junior (автору GPSTM) за предложение такого превосходного бесплатного инструмента.

0 голосов
/ 30 ноября 2011

Итак, оказывается, что есть некоторые устройства GPS / системы записи GPS / и т.д.которые создают файлы .gpx без соответствия официальной схеме GPX.Эти выводы заставляют меня задать вопрос: ПОЧЕМУ?Я серьезно не понимаю идею, стоящую за этим.Кроме того, с большинством недействительных файлов, которые я обнаружил, проблема не в том, что может рассматриваться как дополнительная функция, а в том, что он не соответствует правильному порядку с некоторыми атрибутами 'children , которые я считаюсовершенно глупо.

Единственное, о чем я могу подумать, это то, что вы предварительно обрабатываете входные данные GPX перед проверкой (единственное требование на этом этапе - правильность формирования данных GPX).

Я бы использовал XSLT, начиная с преобразования идентичности, чтобы пропустить все без изменений.Затем вы можете переопределить преобразование идентичности, удалив все с определенным пространством имен.Вы также можете установить порядок дочерних элементов (атрибуты не имеют дочерних элементов, поэтому я считаю, что это опечатка) и исправить имена элементов / атрибутов с ошибками.

0 голосов
/ 29 ноября 2011

Пример того, почему? Geocaching.com создает файлы .gpx со специальными расширениями схемы, которые они определили.

GSAK также добавляет «значение» к файлам gpx. Боюсь, мир gpx НЕ стандартизирован, как ты думаешь.

Ничто из этого не является частью схемы, которую вы используете. Другими словами, у вашей идеи строгой проверки схемы есть проблемы.

Это они, а не вы. Но вы вынуждены разместить «их».

...