1

次のコードではエラーが発生します。

[1.0-ml] XDMP-UNDVAR: (err:XPST0008) Undefined variable $ename

ただし、をに変更するxsl:elementと、値に$ename<xsl:element name="yyyXXX">が表示されることが示されます。つまり、

<yyyXXX>zzz</yyyXXX>

以下のスタイルシートは、Saxonica 9.x で問題なく動作します。

ありがとう。


xquery version "1.0-ml";

xdmp:xslt-eval(
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xdmp="http://marklogic.com/xdmp"        
   extension-element-prefixes="xdmp"
    version="2.0">     

 <xsl:template match="/">
  <xsl:variable name="ename" select="'zzz'"/>
  <xsl:element name="yyy{$ename}">       
   <xsl:value-of select="$ename"/>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>
,document{ <doc/> })
4

1 に答える 1

5

要素名を 2 セットの中括弧で囲む必要がありますyyy{{$ename}}。これにより、外側の XQuery はこれらを XSLT 内の文字通りの中括弧として扱うように指示されます。XSLT を外部ドキュメントから (たとえば を使用してxdmp:xslt-invoke) 呼び出す場合は、余分な括弧は必要ありません。これはサクソン テストと同じです。XQuery を評価して XSLT を動的に作成する機能は非常に強力ですが、認知的なオーバーヘッドが少し増えます。

于 2012-01-18T19:03:44.033 に答える