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

148
Vistas
reemplazar el nodo xslt y luego ingerir con javascript

Reemplazo en el nodo XML de la memoria según la ruta específica antes de la ingesta en la base de datos NoSQL (marklogic).

Entrada: /doc1.xml

 <image xmlns="http://coin/decimal"> <DE> <denomination>1pf</denomination> <reverse>rye stalks</reverse> <obverse>oak sprig</obverse> <before>Anglo–Saxons</before> </DE> <GBP> <denomination>1p</denomination> <reverse>Arms</reverse> <obverse>Queen</obverse> <before>Anglo–Saxons</before> </GBP> </image>

Reemplazo el valor /before:image/before:DE/before:before por un valor de parámetro Xsl:

 const beforeXsl = fn.head(xdmp.unquote( ` <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:before="http://coin/decimal" version="2.0"> <xsl:template match="/Q{http://coin/decimal}image/Q{http://coin/decimal}DE/Q{http://coin/decimal}before"> <xsl:element name="{local-name()}"> <xsl:value-of select="$replace"/> </xsl:element> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:transform> `)); xdmp.xsltEval(beforeXsl, doc, params)

Rendimiento esperado:

 <image xmlns="http://coin/decimal"> <DE> <denomination>1pf</denomination> <reverse>rye stalks</reverse> <obverse>oak sprig</obverse> <before>Anglo-Dutch</before> </DE> <GBP> <denomination>1p</denomination> <reverse>Arms</reverse> <obverse>Queen</obverse> <before>Anglo–Saxons</before> </GBP> </image>

Trato de parametrizar mi xsl, pero tengo el error:

 [javascript] XSLT-BADPATTERN: MarkLogic extension syntax used, EQNames are not supported in XSLT mode
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¡Por qué! ¿No debería haber sido

 var params = {}; params.nsProduct = "http://coin/decimal" params.qPath = "/before:image/before:DE/before:before" params.replaceValue="Anglo-Dutch" const implReplace = fn.head(xdmp.unquote( ` <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:before="http://coin/decimal" exclude-result-prefixes="#all" version="2.0"> <xsl:param name="nsProduct"/> <xsl:param name="qPath"/> <xsl:param name="replaceValue" as="xs:anyAtomicType"/> <xsl:template match="node()[(xdmp:path(.) eq $qPath)]"> <xsl:variable name="replace"> <xsl:element name="{local-name()}" namespace="{$nsProduct}"> <xsl:value-of select="$replaceValue"/> </xsl:element> </xsl:variable> <xsl:sequence select="$replace"/> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:transform> `)); xdmp.xsltEval(implReplace, doc, params)
about 4 years ago · Juan Pablo Isaza Denunciar

0

EQname no se admite en las hojas de estilo XSLT 2.0. Está intentando usarlos en la expresión @match .

En su lugar, use el prefijo de espacio de nombres before que ya ha definido en XPath en su expresión @match en su XSLT:

 <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:before="http://coin/decimal" version="2.0"> <xsl:param name="replace"/> <xsl:template match="/before:image/before:DE/before:before"> <xsl:element name="{local-name()}"> <xsl:value-of select="$replace"/> </xsl:element> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:transform>

También deberá definir un xsl:param o xsl:variable para $replace , que actualmente no está definido.

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