デスクトップブラウザでXMLを変換するのに成功したXSLファイルがあります。そのXSLTでは、EXLT node-set()関数を使用しています。
Androidで同じXSLファイルを使用して同じXMLファイルを変換しようとすると、「XPATH式のエラー」というエラーがスローされ、node-set()関数を呼び出している行が示されます。
Androidでxxx:node-set()を使用する方法について何かアイデアはありますか?
2 に答える
Android は LibXML2 を使用するため、hasExsltSupport()
メソッドがあります。有効になっている場合は、http://www.exslt.org/exsl/index.htmlで示されているように使用します
Android は Xalan を使用します。exslt 拡張機能を宣言して Android Studio をビルドすることはできませんでしたが、xalan 名前空間関数は、名前空間宣言をダウンロードした後にビルドされます。残念ながら、それでもエラーがスローされます。
javax.xml.transform.TransformerException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object org.apache.xalan.extensions.ExtensionsTable.extFunction(org.apache.xpath.functions.FuncExtFunction, java.util.Vector, org.apache.xalan.extensions.ExpressionContext)' on a null object reference
これはバグのように思えます。なぜなら、コンテキストはプロセッサから取得されるはずであり、xsl は param/variable のみを提供するからです。