2011-11-15 6 views
9

Zastanawiam się, dlaczego ktoś chciałby użyć selektorów CSS zamiast selektorów XPath, lub odwrotnie, gdyby mógł użyć jednego z nich. Myślę, że zrozumienie algorytmów przetwarzających języki rozwiąże mój cud.Różnice w algorytmach zapytań między XPath i CSS

Istnieje osobna dokumentacja dotycząca selektorów XPath i CSS, ale znalazłem bardzo niewiele porównań. Poza tym nie używam tak bardzo selektorów CSS.

Oto, co przeczytałem o różnicach. (Te trzy referencje omówić zastosowanie XPath i CSS selektorów w selen kwerendy HTML, ale mój cud ma charakter ogólny.)

Wygląda CSS Algorytmy wyboru są w jakiś sposób zoptymalizowane pod kątem HTML, ale nie wiem jak.

  1. Czy jest artykuł na temat działania algorytmów zapytań CSS i XPath i ich różnicowania?
  2. Czy są inne abstrakcyjne różnice między językami, których mi brakuje?
+0

Zastanawiasz się, jakie różnice występują ogólnie lub w szczególności, gdy są używane w Selenie? – btlachance

+0

Zastanawiam się nad różnicami w ogóle. (Właściwie nigdy nie używałem Selenium.) –

Odpowiedz

2

Główną różnicą jest to, w jaki sposób stabilny jest struktura dokumentu kierować:

  1. XPath jest dobrym językiem zapytań kiedy sprawy struktury i/lub jest stabilny. Zwykle określasz ścieżkę, warunki, dokładne przesunięcie ... jest to również dobry język zapytań do pobrania zestawu podobnych obiektów i dlatego ma on bliski związek z XQuery. Tutaj dokument ma stabilną strukturę i musisz odzyskać powtarzające się/podobne sekcje: selektory CSS lepiej pasują do arkuszy stylów CSS. Nie obchodzi ich struktura dokumentu, ponieważ to bardzo się zmienia. Pomyśl o jednym arkuszu stylów CSS zastosowanym do wszystkich stron HTML witryny. Zawartość i struktura każdej strony jest inna. Tutaj selektory CSS są lepsze z powodu tej zmieniającej się struktury. Zauważysz, że dostęp jest bardziej oparty na tagach. Większość składni CSS określa zestaw elementów, atrybutów, id, klas ... i nie tyle ich strukturę. Tutaj musisz zlokalizować sekcje, które nie mają wyraźnej lokalizacji w strukturze dokumentu, ale są oznaczone pewnymi atrybutami.


Aktualizacja Po bliższym przyjrzeniu na swoje pytanie zdałem sobie sprawę, że jesteś bardziej zainteresowany w obecnej implementacji, a nie charakter języków zapytań. W takim przypadku nie mogę udzielić ci odpowiedzi, której szukasz. Mogę tylko przypuszczać, że powodem jest to, że jeden jest bardziej zależny od struktury niż drugi.

Na przykład w XPath należy śledzić strukturę dokumentu, nad którym pracujesz. Z drugiej strony selektory CSS są wyzwalane, gdy pojawia się konkretny znacznik i zwykle nie ma znaczenia, co było przed nim.Mogę sobie wyobrazić, że znacznie łatwiej będzie zaimplementować algorytm selektora CSS, który działa podczas czytania dokumentu, podczas gdy XPath ma więcej przypadków, gdy naprawdę potrzebujesz pełnego dokumentu i/lub ścisłego śledzenia tego, co czyta (ponieważ historia i tło tego, co czytasz, jest ważniejsze)

Teraz nie bierz mnie zbyt poważnie na temat mojej aktualizacji. Zgaduję tylko tutaj, ponieważ miałem pewne doświadczenie w analizie języka, ale w rzeczywistości nie mam doświadczenia z tymi, które zostały zaprojektowane do analizowania danych.

Powiązane problemy