2013-12-19 4 views
1

Короткий вопрос: - это API-переключатели, предназначенные для обработки XML-документов?Использование API-интерфейса селектора с документами XML

Longer вопрос с «почему я прошу» ...
Я в ходе создания какой-то старый код, который делает использование на стороне клиента генерируется XML и XPath в нечто кросс- браузер, который доволен в более поздних версиях IE (10+), а также до IE7 (а также в Chrome, Firefox и т. д.)

Теперь есть various вокруг поддержки XPath в IE и тот факт, что он выглядит (evaluate(), нет SelectNodes()). Предположительно some classes have been whitelisted, но некоторые тесты, похоже, намекают, что это ненадежно, когда в IE10 включена фильтрация ActiveX.

Я играл с wicked-good-xpath, но я столкнулся с проблемами с некоторыми формами XPath. Кроме того, если IE никогда не будет иметь поддержку XPath, я бы предпочел не зависеть от внешней библиотеки и найти следующую «лучшую» вещь для использования.

Было указано, что вместо этого the selector API is now the recommended choice. Проблема, которую я имею в этом, заключается в том, что она в первую очередь представляется API-интерфейсом HTML (в основном, поскольку она выросла из CSS и, как таковая, имеет особые случаи для атрибутов класса и идентификатора - возможно, другие HTML-измы, которые я еще не создал видел).

Таким образом, API-интерфейсы селекторов разумны для обработки XML-документов? Учитывая отсутствие поддержки в IE, ответ, вероятно, «да», но я не вижу ничего авторитетного, что дает определенную рекомендацию (или антирекомендую).

ответ

2

Это, безусловно, есть. Несмотря на то, что CSS действительно был сопутствующим HTML, он также был разработан как агностический язык документа с HTML-изомами, определенными отдельно от общих правил (при этом все еще совместимыми), а также стандарт Selectors, полученный из селектора CSS синтаксис.

В Selectors standard, на которой базируется API-селекторы, начинается таким образом:

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

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

Обратите внимание, что хотя HTML и XML действительно используют идентификатор и идентификатор класса (вы можете определить атрибуты ID и IDREF в XSD, например), вы можете использовать их только с помощью идентификаторов и селекторов классов, если реализация API Selectors знает, как этот особый вкус XML определяет эти семантики. Поскольку реализация, которую вы используете, является браузером, скорее всего, единственные XML-вкусы, которые он понимает, - это широко принятые веб-стандарты, такие как SVG и MathML, а не, например, ваш собственный XML-вкус. У вас все еще есть свои базовые селектора типов, селектор атрибутов, структурные псевдоклассы и комбинаторы, но для вас это будет более чем достаточно.

Большинство ограничений вы будете в конечном итоге работает на, вероятно, будет находиться в самом синтаксисе селектора, хотя некоторые из этих ограничений являются исправляется в Selectors level 4 и Selectors API level 2, с индикатором предмета, :matches(), расширенный :not(), :nth-match(), :nth-last-match() , и :scope, среди прочих.

+0

Знаешь, хотя я быстро просмотрел спецификацию селекторов, я полностью пропустил этот пункт. Спасибо, что заставило меня выглядеть глупо :-) –