問題タブ [apache-cocoon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - Saxon は XSLT の「トップレベル テキスト ノード」例外をスローしますが、XML は整形式のようです
Mac OSX で Cocoon を Apache Tomcat 7.0.42 で実行しています。Saxon から非常に奇妙なエラーが頻繁に発生します。XML に最上位のテキスト ノードがあると表示されます。まず、出力 xml を意味するのか、xsl xml を意味するのかわかりません。第二に、どちらもトップレベルのテキスト ノードを持っていないと思います。
スタック トレースからのエラー メッセージは次のとおりです。
net.sf.saxon.trans.XPathException: 「standalone」または「doctype-system」が指定されている場合、ドキュメントは整形式でなければなりません。ただし、このドキュメントには最上位のテキスト ノード net.sf.saxon.serialize.XMLEmitter.characters(XMLEmitter.java:574) net.sf.saxon.event.RecomingContentHandler.flush(RecomingContentHandler.java:543) が含まれています。
<...長いスタック トレース...>
org.apache.cocoon.servletservice.DispatcherServlet.service(DispatcherServlet.java:106) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.cocoon.servlet.multipart.MultipartFilter.doFilter(MultipartFilter.ジャワ:131)
これは、common.xsl をインポートする私の departments_list.xsl です。
これが私のcommon.xslです:
apache-cocoon - Apache Cocoon 2.2 で処理する XML を生成するときにフロースクリプト値を読み取る方法
これを行う単純なフロースクリプト関数があります。
私のsitemap.xmapには、次の構成があります。
html.xslt ファイルで xsl:stylesheet を使用して、page.xml ファイルから値を読み取ります。シンプルで簡単です (そして期待どおりに動作します)。
ただし、html.xslt ファイルに渡すために、page.xml ファイル内のフロースクリプト値 (ここではユーザー名) を読み取りたいと考えています。これは jx:template で実行できますか? (私が見つけた例ではそれを使用していますが、Apache Cocoon 2.2 ではうまく機能しません。以前のバージョンのみです..) jx:template が解決策でない場合: 他に何がありますか?
xml - XSLT: 複数の XML ファイルからノードをコピーし、ノードを別の XML ファイルに置換または追加し、コンテンツ全体を HTML に変換します。
一体何なの?
次の操作を実行する xslt ファイルを作成する必要があります。全体の話は法律についてです。法改正で何が起こっているかを考えてみてください。あなたは古い法律 X を持っており、立法者は法律 X を参照する修正を含む新しい法律 Y をもたらします。修正は、法律のあらゆる種類の下位部分 (節、記事、段落など) を置き換えることができます。
ローX
第1条
- ここに本当に古いものがあります
- 何とか何とか何とか
第2条 [....]
Y法
第1条
- 何とか何とか何とか
第2条
- 法律 Y の第 1 条の第 1 段落を次のように置き換えます。
そして、あなたが本当に知りたいことは何ですか?
法則 X'
第1条
- 新鮮で素晴らしいもの
- 何とか何とか何とか
第2条 [....]
XML立法の世界に移りましょう
このようなXMLファイルXがあります
このようなXMLファイルYがあります
そして、X' を生成します。
ヒント: <Modification>
コンテンツは、あらゆる種類の法律の一部である可能性があります。上記のような単一の XML 要素かもしれませんし、記事全体のようなネストされたノード全体かもしれません!
ヒント 2:<Modification>
同じ要素が 1 回しか発生しないと誰が言いましたか? おそらく、2012 年に法律 Y が特定の部分を変更し、2013 年に新しい法律 Z が、既に変更された部分を別の方法で変更するか、この部分の下位部分を変更します!
ヒント 3:<Modification>
ファイル X に既にある要素を参照していると誰が言いましたか? たぶん、法律 Y は、古い法律 X に新しい部分を追加します!
変更がどこにあるのかをどのように知ることができますか?
- それらの DocumentURI 属性値はわかっています。
- それらが立っているXMLファイルを知っています。
XSLT を使用する前に、アクション (findmodifications) が呼び出されます。このアクションでは、法律の ID を表す URL のワイルドカード (*) を使用し、rdfstore で変更を検索します。最後に、modification と呼ばれるリクエスト パラメータを設定して、結果を返します。
変更のパラメーターには、次の構造があります。
結局、変更された XML コンテンツ X' で何をしたいのでしょうか?
私は Web アプリケーション プロジェクトに Apache Cocoon Framework を使用しているため、サイトマップに特定のパイプラインがあります。このパイプラインは、変更箇所を見つけるためにアクションを呼び出し、X ファイルを取得して xslt 変換を実行し、HTML としてシリアル化します。
HTML 変換用の XSLT テンプレートは次のとおりです。
追加情報が必要な場合は、お尋ねください。実際の XML X ファイルはここにあります。X に変更を加えた実際の XML Y ファイルは、ここにあります。変更された XML は次のようになります。
修正タイプ:
- 実際の XML ファイル Y の変更 2、3、4 のようなノードの置換。
- 実際の XML ファイル Z の変更 1 のようなノードの追加。
- ノードの削除。削除の変更が空のノードの構造を持つとしましょう。お気に入り
<Modification DocumentURI=""><P2 DocumentURI=""></P2></Modification>
java - Apache Cocoon 2.2: アクションからパラメーターを返し、それを HTML ページで使用してテーブルを埋める
私がしたいこと?
私は Apache Cocoon プロジェクトに取り組んでおり、HTML ページでパラメーターを返すソリューションを見つけたいと考えています。
ArrayList タイプのパラメーターを取得し、それを HTML ページで使用してテーブルを埋める必要があります。これどうやってするの?リクエストパラメータの設定は正しいですか? はいの場合、HTML コード内で使用する方法は? いいえの場合、パラメータを正しく返す方法は?
ActionClass.java
結果Bean.java
xml - 別の xml ファイルに依存する Cocoon でのマッチング セレクター
「*.myxml」のパターンに一致する Cocoon でパイプラインを作成しようとしています。これは、(generate type="file" を使用して) XML ファイルを読み取ります。この XML ファイルは次のように形成されます (多数のファイルがあります)。
したがって、パターンが a.myxml の場合、b.xml を読み取り、c.xslt を適用します。これらすべては、この XML ファイルを使用して動的に行われます。毎回パイプラインを変更することなく、新しいファイル (独自の .xml および .xslt を含む) を追加できるようにしたいと考えています。
出来ますか?これのためのセレクターはありますか?XML ファイルのコンテンツ (XPath セレクター ファイル [/name = {1}.myxml]/source など) を生成および変換の src として渡す方法はありますか?
ご協力ありがとうございました。
xslt - Apache Cocoon 2.2 で XSLT に Saxon9 を使用する
Apache Cocoon (2.2) での XSLT 処理に Saxon (9HE) を使用したいと考えています。http://wiki.apache.org/cocoon/Saxonから Saxon を使用するための指示に従いました。これらの手順では、.xconf ファイルを使用するプロセスについて説明します。これは、Cocoon 構成の推奨される方法ではなくなりました ( http://cocoon.apache.org/2.2/core-modules/core/2.2/1259_1_1.htmlで説明されているように)。ただし、そのページには、従来の .xconf 構成が引き続きサポートされていることも記載されています。
(Saxonの手順で説明されているように)、(上記のリンクのCocoon構成ページで説明されているように)、およびでcore.xslt-processor
構成を配置しようとしました。いずれの場合も、次のエラーが表示されます。WEB-INF/cocoon.xconf
WEB-INF/cocoon/xconf/saxon-xslt.xconf
META-INF/cocoon/saxon-xslt.xconf
に配置saxon9he.jar
し、Saxon の説明に従ってWEB-INF/lib
そのディレクトリを削除しようとしました。META-INF
ケースごとにサーブレットコンテナー (Jetty) を再起動しました。
私は Java のアマチュアなので、基本的な手順が欠けている可能性は確かにあります。また、私は DSpace システムのコンテキストで Cocoon を使用しているため、DSpace が私の .xconf ファイルを無視するように設定されている可能性があることにも注意してください。
ただし、Spring 構成または .properties ファイルを使用して Saxon プロセッサを指定する方法があるはずですが、オンラインでそれを行うための指示は見つかりませんでした (それらはすべて .xconf 構成プロセスを指定しています)。
何かご意見は?ありがとう!