2012-01-25 3 views
3

でのコーディングoを私はいくつかのXSLスタイルシートを作ることができると思います/ wのサクソンXPathプロセッサを使用する方法:その後、同様に、コマンドラインでサクソンXSLTプロセッサを搭載したXPath式を評価するためのパラメータオプションをテンプレートとして使用する、Javaの

<xsl:template match="/"> 
    <xsl:copy-of select="saxon:evaluate($xpath-param)"/> 
</xsl:template> 

はまた、他の可能性は、彼らのJava APIを使用することです:http://www.saxonica.com/documentation/xpath-api/intro.xmlを私は

サクソンは、コマンドラインからXPath式を評価させるためにどのような方法がありますJavaの

を知らないのですか?
シェルスクリプトは十分であろう、あまりにも、可能であれば

更新:
ブラウズサクソンdocumentation、私は約XPathExampleサンプルを見つけました。残念ながら私はそれを使用することはできません

答えて

5

コマンドラインからSaxon(XQuery)を実行できます。これを行うには、-qを使用してXPath/XQueryを持つファイルを指定するか、-qsを使用して直接クエリ文字列を渡すことができます。

簡単なXPathを処理する-qsの使用例は次のとおり

<a> 
    <b id="x"/> 
    <b id="z"/> 
    <b id="x"/> 
</a> 

input.xmlにサクソンコマンドライン(私がテストするSaxon9-HEを使用)

java -cp "saxon9he.jar" net.sf.saxon.Query -s:"input.xml" -qs:"https://stackoverflow.com/a/b[@id='x']" -o:"results.xml" 

results.xml

<b id="x"/><b id="x"/> 

注:-qs:"<results>{/a/b[@id='x']}</results>":私はこのような何かに-qsを変更することにより、整形私の出力を作っていたかもしれません。より多くのコマンドラインオプションについては

、ここを見て:http://www.saxonica.com/html/documentation/using-xquery/commandline.html

+0

OK、ありがとう。私はちょうどXMLを学び始め、容易なXPath 2.0プロセッサが必要でした。私はXQueryをそのように使うことができるかどうかわかりませんでした。 'java -classpath /usr/share/java/saxonb.jar net.sf.saxon.Query" $ @ "'のショートカットである '/ usr/bin /'の 'saxon-xquery'は上記のスニペットのパラメータを実行できませんしかし、あなたのサンプルのように文字通り( 'saxon9he.jar')を呼び起こすことはうまく動作します。 – theta

1

を@DevNullが言うように、コマンドラインからXQueryを使用することは、より良い賭けです。コマンドラインからXPathを提供することは、XPathが出力のフォーマットを制御する方法を提供しないため、あまり有用ではありません。 XPathはXQueryのサブセットであるため、XQueryインターフェイスを使用してXPath式を評価することができます。

現在のバージョンのオープンソースのSaxonは、Saxon-HE 9.4.0.2です。使用しているバージョンは、コマンドラインで-tオプションを使用して調べることができます。あなたのLinuxディストリビューションにバンドルされている古いバージョン(Saxon-B)が見つかったかのように聞こえ、@prungeはXSLT 1.0とXPath 1.0だけをサポートする古いバージョン(Saxon 6.5)を指しています。

+0

あなたのご意見ありがとうございます。バージョンは9.0.0.4です。これはUbuntu 11.04のデフォルトです。 SourceForgeから最新のバージョンをダウンロードした後、XPathパターンを正常に実行しました。私はUbuntuのバージョンをアンインストールして、/ usr/bin /に新しい便利なショートカットを作成します。出力からXML宣言を抑制するオプションが見つからないようです。 – theta

+1

この例のように出力メソッドをパラメータとして使用できることがわかりました: '\!" method = text "' 'bash'。 'sh'では、バックスラッシュの必要はありません – theta

1

もう1つの方法は、oXygenなどのツール内でXPathを使用することです。そのXPath Builder Viewは、XPath式の構築とテストに非常に便利なインターフェイスです。ツールのLinux versionがあり、Saxonと他のプロセッサ(Xerces、LIBXML、XSV、MSXML4.0、MSXML .NET、およびSQC)の組み込みサポートが組み込まれています。

enter image description here

+0

確かに、商用のJavaソフトウェアで、これもハイエンドマシンが必要なのです。 XPathの評価では、ローカルでもHTTP経由でも、 'saxon'や' xmllint'は十分であり、どんなツール/エディタのユーザにも統合できます。 – theta

+1

これは市販品である。サクソンもそうです。 :-)サクソンのように、oXygenは非常に良い商用ソフトウェアであり、XMLを使っていろいろな作業をするなら、あらゆる価値があります。いいえ、ハイエンドマシンは必要ありません。私の2歳のラップトップはうまく動作します。 OPの要件を前提とした実行可能なオプションです。より多くの選択肢がより良いです。 –

+0

私はそうは思わない。また、XPATHを行うことができる商用および非商用のさまざまな製品があります。また、すでに使用可能なプロセッサを使用して作業を行うこともできます。酸素は良い提案から遠いです:1.それは単なるXPATH以上を行うように設計されており、それをやりたいユーザーを混乱させるかもしれません。 2.大量のRAMを使用するには少なくとも良いマルチコアCPUが必要です。あなたは端末から無料で行うことができるJava GUIからXPATHプロセッサを使用するために支払うお金のためにあなた自身新しいPCを買うことができます – theta

関連する問題