2016-05-09 10 views
3

Ich habe eine xslt, die in Marklogic ausgewertet wird (über xdmp:xslt-invoke). Ich versuche, eine Variable innerhalb eines Tags xsl:message auszuwerten, wenn Marklogic jedoch die Nachricht findet, wertet es die Variable nicht aus, sondern zeigt einfach den darin enthaltenen Text an.wie Variablen in xslt Nachrichten ausgewertet werden, wenn sie auf MarkLogic laufen

Zum Beispiel:

<xsl:template match="/"> 
    <xsl:variable name="x" select="//xpath"/> 
    <xsl:message terminate="yes">Terminating <xsl:value-of select="$x"/></xsl:message>   
</xsl:template> 

Wenn diese ausgewertet wird, sehe ich so etwas wie dies in der Ausgabe:

[XSLT] XSLT-MSGTERMINATE: (err:XTMM9000)<xsl:message terminate="yes"><xsl:text>"Terminating "</xsl:text><xsl:value-of select="$x"/><xsl:text>"&#10; />"</xsl:text></xsl:message> -- xsl:message instruction called with terminate 

Gibt es einen Weg, um tatsächlich zu bewerten und den Wert von $ x Anzeige in die Nachricht?

Antwort

1

Während xsl:message terminate="yes" nicht die Variablen ausgewertet wurde. Ich war in der Lage, die Variablen durch xdmp:eval in der folgenden Art und Weise zu bewerten und die Abbruchmeldung als korrekt fn:error

<xsl:template match="//some xpath condition"> 
    <xsl:variable name="x" select="//someXpath string value"/> 
     <xsl:message terminate="yes"> 
     <xsl:value-of 
      select=" 
       xdmp:eval(concat(
       'xquery version ''1.0-ml'';', 
       'let $message := concat(''Terminating with value ''', ',', '''', $x, ''')', 
       'let $_error := error(xs:QName(''Error''), $message)', 
       'return $_error' 
       ))" 
     /></xsl:message></xsl:template> 

Die folgenden xdmp:eval den $x Variablenwert bewerten zu präsentieren.