Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
Document.evaluate() obteniendo el espacio de nombres predeterminado de la resolución de espacios de nombres

El siguiente código devuelve nulo para doc.evaluate() . Pero devuelve el elemento correcto para XPath //cat:symbol[@dog:label='banana']" . Entonces, creo que no está encontrando el espacio de nombres predeterminado.

Si ejecuto console.log(ns.lookupNamespaceURI("")); o console.log(ns.lookupNamespaceURI(null)); , devuelve http://www.w3.org/2000/svg , que es el valor xmlns del SVG. Entonces, ¿por qué el código no encuentra el elemento para "//symbol[@dog:label='banana']" ?

JavaScript

 fetch('test.svg') .then(response => response.text()) .then(data=>{ const parser = new DOMParser(); const doc = parser.parseFromString(data, "text/xml"); const ns = doc.createNSResolver(doc.documentElement); const res = doc.evaluate("//symbol[@dog:label='banana']", doc.documentElement, ns, XPathResult.FIRST_ORDERED_NODE_TYPE, null); console.log(res.singleNodeValue); })

prueba.svg

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:dog="http://dog.com/dog" xmlns:cat="http://cat.com/cat"> <symbol dog:label="banana"> <rect y="10" x="10" width="90" height="90" stroke-width="5" stroke="#f00" fill="#f00" fill-opacity="0.5" /> </symbol> <cat:symbol dog:label="banana"> <rect y="5" x="5" width="90" height="90" stroke-width="5" stroke="#f00" fill="#f00" fill-opacity="0.5" /> </cat:symbol> </svg>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

XPath 1.0, que los proveedores de navegador admiten con la función de evaluate en un nodo de Document , no tiene el concepto de un espacio de nombres de elemento predeterminado, por lo que mientras que el solucionador de espacio de nombres creado asigna el prefijo vacío '' a un URI dentro del contexto de XPath 1.0 que no tiene significado como hay un nombre de elemento sin prefijo (por ejemplo, foo ) siempre selecciona un elemento con nombre local foo en ningún espacio de nombres.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda