問題タブ [exslt]

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.

0 投票する
1 に答える
107 参照

numbers - XSLT 1 を使用して文字列内のすべての数字を検索する方法

XSLT 2 および 3の文字列内のすべての数値を検索する方法には、いくつかの優れた解決策があります。 XSLT 1(EXSLT の可能な助けを借りて)の制限内でまったく同じことを達成するにはどうすればよいですか?

次に例を示します。

望ましい出力は次のようになります。

0 投票する
1 に答える
765 参照

xslt - 要素の 1 つの XML グループからデータを取得し、別の XML グループにフィードする方法

セカンダリまたは別の xml ファイルのデータを使用して、以下の XML の要素を更新しようとしています。入力 XML ファイルと 2 次 XML ファイルの両方に同じ数のセグメントがあります。セカンダリ XML の最初のセグメントで値を取得し、INPUT xml の要素を更新する必要があります。XSLを使用して実行できるかどうかはわかりませんが、誰かが私を案内してくれますか?

具体的には、セカンダリ XML の //PDetails/PStatus/Code および //PDetails/PStatus/Description 値に基づいて<indicator></indicator>、それぞれの INPUT XML の値を更新しようとしています。<iOSection>

以下は入力 XML ファイルです。

以下はセカンダリ XML ファイルです。RSPDetails という xsl 変数で使用できます。

の値は<indicator>、 //PDetails/PStatus/Code = '0' および //PDetails/PStatus/Description = 'Cancelled' の場合は 'YES' である必要があり、それ以外の場合はすべて 'NO' である必要があります。

条件は、ポジション 1 データ<iOSection>を使用してポジション 1に適用し、ポジション 2 データを使用してポジション 2 に適用する必要があります。<PDetails><iOSection><PDetails>

期待される OUTPUT は次のとおりです。

私はXSLの下で試しましたが、どこにも近づきませんでした

0 投票する
1 に答える
428 参照

php - dyn:evaluate() が正しく評価されていませんか?

何らかの理由で、dyn:evaluate() を介して XSLT 内で実行すると、XPath クエリが機能しません。私はPHPを使用しており、hasEXSLTSupport()評価するとtrue

これが私の生の XML ドキュメントです。

私はこのXPathステートメントを使用しています:

私の XSLT では、このセクションを使用して動作するかどうかを確認しています。

Where$queryは、XPath 式を含む文字列に評価されます (私もチェックしたのでわかりxsl:value-ofます)。

エラーが返されません。実際、 a を実行すると!に<xsl:value-of select="boolean($elementValue)" />評価されます。falseこれは、何も返されていないことを意味します。

私のスタイルシートのヘッダーは次のとおりです。

XPath は完全に有効ですが、評価されていないようです (PHP と Notepad++ の XPatherizerNPP 拡張で確認しました)。私は何が欠けていますか?

編集

私の実際のスクリプトはいくつかのクラスとフォルダー内にあるため、実行しているもののより単純なバージョンを投稿しています。dyn:evaluate() は、メモ帳 ++ がそうすべきだと言っているにもかかわらず、まだ機能しないという点で同等であり、参照しやすいように他のクラスの関数を 1 つにコピーアンドペーストしました。

私のmock.xmlは、解析しているスクリプトです

私のcountFieldValues.xmlスタイルシートは、readSubtree php 関数呼び出しで一度に個々のサブツリーを解析するために PHP を呼び出します。

クラスtestscript.phpを呼び出してすべてを実行する

私のclass.phpはプロセッサです。PHP で XMLReader クラスと XSLTProcessor クラスを使用します。

アップデート:

dyn:evaluate()ノードセットを返すいくつかの式を見つけました。しかし、彼らは少し奇妙です。

それらが true と評価される場合は次のとおりです。

しかし、これらは false と評価されます。

どうしたんだ...?

アップデート:

Michael の提案で、私は彼のテストを実行し、次の結果を得ました。

失敗した部分はターゲットが空の要素です。

0 投票する
2 に答える
1220 参照

xml - XSLT - ノード セットを反復処理する

私はこのようなxmlを持っています:

col1 からエスケープされたコレクションを取得し、その行を反復処理する必要があります。exsl:node-set 関数を使用しています。これが私の単純化されたxslです:

xsl:value-of 関数を使用して変数 $collection から値を正しく読み取ることができますが、行がないかのように反復することはできません。私が間違っていることは何ですか?

0 投票する
3 に答える
1828 参照

java - JBoss eap 6.1 サーバーで XSLT 2.0 プロセッサーを有効にして、XSLT 2.0 functions are not available などのエラーを取り除くにはどうすればよいですか?

XSLT 2.0 で日付の書式設定を試みています。ワークスペースで実行しようとすると、正常に実行され、適切な応答が得られます。しかし、JBoss eap 6.1 に my jar をデプロイした後に同じことを達成しようとすると、以下のエラーが発生します。

16:35:02,311 ERROR [XSLTUtil] (DefaultQuartzScheduler-camel-12_Worker-2) XSLTUtil|0|TransformerException: xslt ファイルで xml を変換中にエラーが発生しました: javax.xml.transform.TransformerException: org.xml.sax.SAXException:関数が見つかりませんでした: format-dateTime javax.xml.transform.TransformerException: 関数が見つかりませんでした: format-dateTime|

私のXslファイル:ここでは、format-dateTimeを使用して現在の日付を他の形式にフォーマットしようとしています.

これは、XML および XSL ファイルの変換/マッピングに使用している XSLT util クラスです。以下の Java ファイルでは、ローカル ディレクトリから xsl ファイルを読み込んでいます。jar を JBoss サーバーにデプロイしたら、ファイルの場所を読み取り、それを XSLTFilename 変数に渡します。

この特定のコードは、私のワークスペースで正常に動作します。問題を解決するために、JBoss サーバーで何かを構成する必要がありますか? 何が欠けているのか正確に教えてください。

0 投票する
1 に答える
1029 参照

xml - EXSLT : date:format-date : 時刻ではなく日付を解析します

セットアップ: Apache Xalan 2.7.1

入力:

XSLT :

出力:

Q :時間が日付とともに解析されない理由がわかりません。時間は 11:48:00 に等しくなければなりません。


注: xslt 1.0 ソリューションのみを適用できます。

0 投票する
1 に答える
240 参照

xml - サクソンエラー:関数呼び出しに一致するメソッドが複数あります

次の部分的に生成された xsl と、オーバーロードされたメソッドを持つ拡張クラスがあります。Xalanはそれをうまく変換できます。ただし、Saxon では次のエラーが発生します。2 つの文字列パラメーターを使用してメソッドにバインドできない理由がわかりません。どんな助けでも大歓迎です。

関数呼び出し Compare:lessThan に一致するメソッドが複数あり、型情報が不十分で、どのメソッドを使用すべきかを判断できません

`

Java 拡張クラスのメソッド

0 投票する
0 に答える
43 参照

xslt-1.0 - XSLT 1.0: 空白で区切られた属性に基づくキー

少なくとも 1 つのポインターを含むa属性を持つ要素を含む XML があり、空白で区切られた任意の数のポインターを含むことができます: . XSLT 1.0 スタイルシートでは、ドキュメント内で参照されているすべての要素のみにテンプレートを適用する必要があります。@ref<a ref="#p1 #p2"/>ba/@ref

そこで、 の値を構成要素に<xsl:key name="k1" match="a" use="my:refs(@ref)"/>分割する関数を使用して を定義し、 を持たせるという考えになると思いました。仕様を正しく解釈すると:@ref<xsl:template match="b[key('k1', @xml:id)]"/>

use 属性は、キーの値を指定する式です。式は、パターンに一致するノードごとに 1 回評価されます。結果がノード セットの場合、ノード セット内の各ノードについて、パターンに一致するノードは指定された名前のキーを持ち、その値はノード セット内のノードの文字列値です。

(先頭の「#」を引いた)の値からなる を文字列として@use返す関数を提供する必要があります。node-seta/@ref

<xsl:key name="k1" match="a" use="str:tokenize(@ref, '# ')/>私の解決策は、とを定義することでした<xsl:template match="a[key('k1', @xml:id)">

Xalan をプロセッサとして使用すると、これで目的の結果が得られます。ただし、Saxon 9.6.0.7 では、循環キー定義について不満があります。

今、私は少し混乱しています:私の解決策はまったく有効ですか?もしそうなら、なぜサクソン人は不平を言っているのですか?他の/より良い(/本当の)解決策はありますか? [コメントを参照]。

編集:追加の質問: XSLT 2.0 で結果を取得するにはどうすればよいですか? キー定義で使用tokenize(@ref, '#')するだけでは、空白があるため十分ではありませんが、normalize-space(tokenize(@ref, '#'))Saxon では同じエラー XTDE0640 が発生します。

ありがとう、ダリオ


XML の例:

出力は

(特に注文する必要はありません)。

0 投票する
2 に答える
162 参照

xml - Saxon HE vs Saxon PE: File URI Resolution

My question is a very easy one. I just want to know if buying the professional version of Saxon will help with file URI resolution, since the professional version has the EXPath extension.

I'm asking this because no matter how hard I try, (passing command line parameters, using file:///C|/path/to/text.csv, etc.) Saxon-HE refuses to let my stylesheets load a raw text file using unparsed-text('file:///C:/path/to/text.csv'), and will only resolve the file if it comes from one of the network drives that are mounted, unparsed-text('file://example.com/Dept/path/to/text.csv').

I have to ask this because the Saxon documentation explicitly states that unparsed-text() is NOT dependant on any custom URI resolver classes being used.