2017-06-08 9 views
0

Apache FOPを使用してPDFを生成しています。 XML構造のXSLノードの選択によってXPath構文エラーが発生する

<fo:block> 
    <xsl:choose> 
     <xsl:when test="$data/mainNode/childNode/code = someFeature/someCode"> 
      <xsl:value-of select="$data/mainNode/childNode/[code=someFeature/someCode]/value" />     
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:text>Bar</xsl:text> 
     </xsl:otherwise> 
    </xsl:choose> 
</fo:block> 

サンプル:

は、私は、次のXSL変換を持っているXPST0003: To use XPath 3.1 syntax, you must configure the XPath parser to handle it

<mainNode> 
    <childNode> 
     <code>A</code> 
     <value>1</value> 
    </childNode> 
    <childNode> 
     <code>B</code> 
     <value>2</value> 
    </childNode> 
    <childNode> 
     <code>C</code> 
     <value>3</value> 
    </childNode> 
</mainNode> 

酸素のXMLエディタを使用して、それを実行している私はというエラーを取得します。エンジンはSaxon-PE 9.7.0.15です。

問題は4行目です。ここではの値をsomeFeature/someCodeが返すコードと同じコードで取得しようとしています。

これを書き換える方法はありますか?私はエラーを受け取りませんか?

+0

投稿したコードスニペットにはXPath 3.1固有のものはありませんので、問題は別の場所にある必要があります。再現可能な例を投稿してください:[mcve]を参照してください。 –

+0

酸素はそのラインを問題として示しているので、そのサンプルだけを投稿したのです。また、その行を削除し、 ' Foo'に置き換えてもエラーはありません。 – Cosmin

+0

私は酸素の示していることを知らない、私は私が何を参照して知っている。また、コードにコンテキストがなく、他の場所で定義された変数が含まれているため、問題を再現することはできません。 –

答えて

1

$data/mainNode/childNode/[code=someFeature/someCode]/valueの代わりに$data/mainNode/childNode[code=current()/someFeature/someCode]/valueと思っています。

+0

。答えをありがとう、しかしそれは何も変わらないようです。 – Cosmin

+0

問題を再現できる最小限の完全なサンプルを投稿することを検討してください。なぜ私の修正が構文エラーをもたらすのか分かりません。 –

+0

これを行うには、署名したNDAのためにできないXSLコードをほとんどすべて貼り付ける必要があります。また、貼り付けて名前と値を置き換えると、混乱する可能性があります。 – Cosmin

関連する問題