Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Loose and strict XPath variables/namespaces

Abierto
#349 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Tranquilo
Stack tecnológico
ruby
Área
backend

Línea de trabajo

Comienza en el punto de entrada de XPath de REXML y sigue cómo se gestionan las vinculaciones de namespaces y variables. Compara el comportamiento solicitado para las claves de símbolo y los valores de namespace con los ejemplos de Nokogiri y la especificación de XPath 1.0. Decide si las variables no definidas se comprueban durante la evaluación en el momento de la referencia o antes de la evaluación, y cubre después el comportamiento elegido con tests.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Loose keys

XPath namespaces and variables doesn't accept symbol keys. It'll be convenient if symbol keys are accepted.
Nokogiri accepts both string and symbol keys.

namespaces = { ns: 'url' }
variables = { id: 'a' }
xml = '<foo xmlns="url"><bar id="a"/></foo>'
Nokogiri::XML.parse(xml).xpath('//ns:bar[@id=$id]', namespaces, variables)

Strict value check

XPath variables have value validation. Namespaces can also have validation

Nokogiri::XML.parse('<a/>').xpath('//a', { ns: 42 }) #=> TypeError

Strict variable existence check

There's two options

Nokogiri(libxml2) implements reference time check.

Nokogiri::XML.parse('<b/>').xpath('//a[@id=$foo]', nil, {fooo: '1'}) # => []
Nokogiri::XML.parse('<a/>').xpath('//a[@id=$foo]', nil, {fooo: '1'}) # => ERROR: Undefined variable

XPath 1.0 spec:

A VariableReference evaluates to the value to which the variable name is bound in the set of variable bindings in the context. It is an error if the variable name is not bound to any value in the set of variable bindings in the expression context.

I'm not sure whether it should be an error in evaluation context (reference-time) or in pre-check phase.
In XPath 2.0, it's explicitly defined to be a static-error, so XPath 1.0 spec might be ambiguous.

Lenguaje dominante
Ruby
Estrellas
181
Forks
104
Merge medio
11 h 3 min
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ruby/rexml

Todos los issues de ruby/rexml

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.