問題タブ [xalan]
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.
java - URIResolver、Docbook、XSL Transform
Java /Xalanとhttps://sourceforge.net/projects/docbook/files/docbook-xsl/1.76.1/の公式DocbookXSLファイルとローカルxslを組み合わせて、DocbookXSLをHTMLに変換しようとしています。いくつかのカスタマイズとオーバーライドを提供するファイル。
アプリケーションが外部リソースをダウンロードしたり、ローカルファイルにアクセスしたりする必要がないようにしたい。そこで、URIResolverインターフェースを拡張するクラスを実装しました。
問題は、resolve(final String href, final String base)
関数が要求されている特定のファイルを識別するのに十分な情報を提供していないことです。
たとえば、ローカルオーバーライドファイルの1つは、を使用してxslファイルからインポートされます<xsl:import href="../../../xsl/html.xsl"/>
。この場合、リゾルバークラスのhrefパラメーターは../../../xsl/html.xslに設定されています。これは問題ありません。次に、html.xslファイルはdefaults.xslというファイルをインポートします。hrefパラメーターはdefaults.xslのみに設定され、baseパラメーターはnullに設定されます。
これに続いてhttp://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xslがインポートされる場合があります。この場合、hrefパラメーターはhttp://docbook.sourceforge.net/releaseに設定されます。 /xsl/current/xhtml/docbook.xsl。ただし、docbook.xslがdefaults.xslというファイルをインポートする場合、hrefパラメーターもdefaults.xslに設定され、baseはnullに設定されます。
問題は、hrefパラメーターとbaseパラメーターがリソースを一意に識別せず、前のhrefの順序を見ても、どのファイルが要求されているかを推測できないことです。ファイルが要求されているコンテキストを正確に見つけるためのトリックはありますか?
java - Barcode4jが機能しない(Unixの場合)
私のプロジェクトでは、PDFのバーコードを生成する必要があります。
ローカルのWindowsServerでバーコードを正常に生成できましたが、実稼働UNIXサーバーでは生成に失敗します。
私はbarcode4jを使用しており、code39を生成する必要があります。
私のテンプレート:
私の図書館:
- バーコード4j-fop-ext-complete-2.0
- xalan
- xercesImpl
- xml-apis
- xml-apis-ext
xslt - 変数をインクリメントせずにXSLTでこれを行う方法は?(Xalanを調整してグローバルXSLTイテレーターを作成します。他のオプションはありますか?)
私はXSLTの用語で可能な限り機能的に考えようとしていますが、この場合、微調整せずにそれを行う方法が本当にわかりません。私は大まかにこのデータ構造を持っています:
これを大まかにこの形に平らにしたい
ただし、注意が必要なのは、40行のテキスト行のチャンクを作成したいので、トランザクションをチャンクに分割してはならないということです。つまり、現在のチャンクにすでに38行ある場合、上記のトランザクションは次のチャンクに移動する必要があります。40を完了するには、現在のチャンクを2つの空の行で埋める必要があります。
命令型/手続き型プログラミングでは、それは非常に簡単です。40の倍数までカウントするグローバルイテレータ変数を作成し、必要に応じて空の行を挿入するだけです(XSLT / Xalanを微調整してそのような変数を許可する方法を示す回答を提供しました)。しかし、XSLTでそれを行う方法は?NB:処理しているデータのサイズを考えると、再帰は不可能だと思います...しかし、おそらく私はそれについて間違っています
xml - local-name() を使用して XSLT の最初の子ノードを取得する
この単純な xml があるとします...
この xpath を使用して、最初の本のインスタンスの要素を取得しています。
戻り値
これで問題なく動作しますが、local-name() を使用して動作させる必要があります。次のことを試しましたが、どれも機能しません...
これは繰り返される著者とタイトルの要素を返します。良くありません。最初の子からのみ必要です
これは何も返さない
基本的に、CSV ファイルを作成したいので、出力の最初の行は書籍の属性名とそれに続く任意のデータ値をリストしたヘッダーになります。ヘッダー部分を機能させるだけです。
java - 可変要素名を使用してXSLTでノード値を出力しようとしています
それで、ここ数日間私を悩ませてきた問題があります。かなり簡単なはずですが、XSLTはデバッグするのがとても面倒です。Java1.6でXalan1.0を使用しています
入力XML
XMLを各rfb2_itemの値のコンマ区切りリストに変換する必要があるため、スタイルシートは常にrfb2_itemノードを繰り返します。スタイルシートのパラメーターを使用して、出力されるrfb2_item(valdate、fund_id、sec_id)の要素とその順序を制御しています。
$outputElementsが'*'の場合、入力xmlに表示される順序で要素を出力するだけの特殊なケース
だから、私の質問は、$outputElementsパラメーターに基づいて目的の出力を作成するためのテンプレートをどのように作成するかです。実用的な例は素晴らしいでしょう...
java - xslt を使用して xml を csv ファイルに変換する
xsl:templates および xsl:call-template タグに問題があります。理解不足かもしれませんが、私がやろうとしていることは次のとおりです...
"/*" で一致するテンプレートがあり、他のドキュメント コンテキストを必要とする囲んでいるテンプレート内から他のテンプレートを呼び出す必要がある場合、これを行う最も効率的な方法は何ですか?
ヘッダーと本文のテンプレートを呼び出すときに xsl:with-param を使用して、囲んでいるテンプレートから match="/*" をオーバーライドできるようにしていますが、これを行うと出力がめちゃくちゃになります。「ヘッダー」テンプレートへの呼び出しをコメント アウトすると、本文テンプレートは適切に機能し、その逆も同様ですが、上記の例でわかるように、メイン テンプレートから両方を呼び出すと、それらの動作が奇妙になります。ヘッダーと本文のテンプレートでは、ドキュメントのさまざまな部分を選択する必要があります。そのため、w0th-param を使用することにしましたが、機能しているとは思いません。
代わりに apply-templates を使用する必要がありますか?
java - XSLTでレコードをグループ化するときにO(n ^ 2)の複雑さを回避するにはどうすればよいですか?
XSLで大量のデータをHTMLに変換すると、パフォーマンスの問題が頻繁に発生します。このデータは通常、おおよそこの形式の非常に大きなテーブルのほんの2、3です。
変換中に、このようなレコードを視覚的にグループ化したい
ばかげた実装はこれです(セットはhttp://exslt.orgからのものです。実際の実装は少し異なります。これは単なる例です):
これはO(n^2)
複雑になる傾向があることは容易に理解できます。さらに悪いことに、すべてのレコードに多くのフィールドがあるためです。操作されるデータは数十MBに達する可能性があり、レコード数は最大5000に達する可能性があります。最悪の場合、すべてのレコードに独自のグループと50のフィールドがあります。さらに悪いことに、さらに別のレベルのグループ化が可能であり、これを可能にしますO(n^3)
これで、かなりの数のオプションがあります。
- マップとネストされたデータ構造を含む、これに対するJavaソリューションを見つけることができました。しかし、XSLTスキルを向上させたいので、それが実際には最後のオプションです。
- Xerces / Xalan / Exsltの優れた機能に気づいていないかもしれません。これは、グループ化をはるかにうまく処理できます。
- 私は多分ある種のインデックスを構築することができます
/table/record/group
<xsl:apply-templates/>
このユースケースでは、アプローチがアプローチよりも明らかに速いことを私に証明できます<xsl:for-each/>
。
O(n^2)
この複雑さをどのように減らすことができると思いますか?
xslt - Xalan でサンプルを実行できません
をダウンロードXalan-Java Version 2.7.1
して解凍し、PATH
Java およびCLASSPATH
Xalan用に設定しました。
(xalan.jar、xercesImpl.jar、xml-apis.jarのみクラスパスも設定してみました)
簡単な Hello World の例 (またはその他の例) をテストする場合:
私はいつもこれを取得します:
何が問題ですか ?誰かがアイデアを持っていますか?
ありがとう。