2011-11-15 15 views
9

Me pregunto por qué alguien querría usar selectores de CSS en lugar de selectores de XPath, o viceversa, si pudiera usar cualquiera de los dos. Creo que la comprensión de los algoritmos que procesan los idiomas resolverá mi maravilla.Diferencias en los algoritmos de consulta entre XPath y CSS

Hay una gran cantidad de documentación sobre los selectores de XPath y CSS individualmente, pero he encontrado muy pocas comparaciones. Además, no uso tanto los selectores de CSS.

Esto es lo que he leído sobre las diferencias. (Estas tres referencias discuten el uso de XPath y CSS selectores de selenio para consultar HTML, pero mi asombro es general.)

Parece CSS los algoritmos de selección están de alguna manera optimizados para HTML, pero no sé cómo.

  1. ¿Hay algún documento sobre cómo funcionan los algoritmos de consulta CSS y XPath y cómo difieren?
  2. ¿Existen otras diferencias abstractas entre los idiomas que me faltan?
+0

¿Se está preguntando cuáles son las diferencias en general o específicamente cuando se usa en Selenium? – btlachance

+0

Me pregunto acerca de las diferencias en general. (En realidad, nunca he usado Selenium). –

Respuesta

2

La principal diferencia está en qué tan estable es la estructura del documento actuar bien:

  1. XPath es un buen lenguaje de consulta cuando las cuestiones de estructura y/o es estable. Por lo general, especifica la ruta, las condiciones, el desplazamiento exacto ... también es un buen lenguaje de consulta para recuperar un conjunto de objetos similares y, debido a eso, tiene una relación íntima con XQuery. Aquí el documento tiene una estructura estable y debe recuperar secciones repetidas/similares

  2. Los selectores CSS se adaptan mejor a las hojas de estilo CSS. A estos no les importa la estructura del documento porque esto cambia mucho. Piense en una hoja de estilo CSS aplicada a todas las páginas HTML de un sitio web. El contenido y la estructura de cada página es diferente. Aquí los selectores de CSS son mejores debido a esa estructura cambiante. Notará que el acceso está más basado en etiquetas. La mayoría de las sintaxis de CSS especifican un conjunto de elementos, atributos, id, clases ... y no tanto su estructura. Aquí debe ubicar las secciones que no tienen una ubicación clara dentro de una estructura de documento pero están marcadas con ciertos atributos.


actualización: Después de un vistazo más de cerca a su pregunta me di cuenta de que usted está más interesado en la implementación actual, no la naturaleza de los lenguajes de interrogación. En ese caso, no puedo darle la respuesta que está buscando. Solo puedo suponer que la razón es que uno depende más de la estructura que el otro.

Por ejemplo, en XPath debe realizar un seguimiento de la estructura del documento en el que está trabajando. Por otro lado, los selectores de CSS se activan cuando aparece una etiqueta específica, y generalmente no importa lo que venga antes.Me imagino que será mucho más fácil implementar un algoritmo selector de CSS que funcione mientras lee un documento, mientras que XPath tiene más casos en los que realmente necesita el documento completo y/o seguimiento estricto de lo que está leyendo (porque el historial y el fondo de lo que estás leyendo es más importante)

Ahora, no me tomes demasiado en serio mi actualización. Solo estoy adivinando aquí porque tenía algunos antecedentes sobre el análisis de lenguaje, pero en realidad no tengo experiencia con los diseñados para la consulta de datos.

Cuestiones relacionadas