問題タブ [tei]

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 に答える
133 参照

xml - XSLT 2.0 を使用してマイルストーン要素ごとにテキスト ノードを連結する

私の XML ファイルには、次のような TEI マイルストーン要素が<handShift new="#DP1053/>あります。常に<text>コンテンツの先頭に 1 つ存在しますが、その後に、この種のタグがいくつかあり、2 つまたは 3 つの異なる属性値のいずれかが<text>要素全体に散らばっており、特定の書記が最後に続いて取り上げた場所を示します。attribute の値は、エレメントの属性として登録された TEI ヘッダー内の定義を@new指します。@xml:id<handNote/>

XSLT 2.0 での私の目的は、各書記が書いたテキストを連結して、各書記の作業を個別に照会できるようにすることです。推奨される解決策にgroup-starting-with. 代わりに、私自身の本能は実行することです

  • 実行中の筆記者の手を反復するfor-eachループ
  • astring-join
  • すべてのテキスト ノード
  • ここで、現在のループ反復で処理された手と一致する<handShift/>属性の値を持つ先行は、属性値が一致しない先行よりも近いです。@new<handShift/>

HTML に変換する XSLT 2.0 スタイルシートの私の試行構文は次のとおりです。

ただし、これは、テキスト内の最終マイルストーンに続くテキスト ノードのみを返し、その最終マイルストーンに一致する属性値を選択する for-each 反復でのみ返します。私は>>間違いなくステートメントを間違っており、このアプローチまたは別のグループ化ベースのアプローチについてアドバイスをいただければ幸いです。

この連結をマスターしたら<add hand="DP1054">addition</add>、この性質の一致しないコンテンツを除外し、一致を含めることによって、 - タイプのコンテンツ (つまり、現在のスティントのものと一致しない手による修正) を方程式に追加する必要があることに言及する必要があります。コンテンツは一致しない書記のスティント内にありますが、これを「正しい」場所の連結に追加する必要があるとは必ずしも予想していません。したがって、2 つのかなり単純な追加ステップでこれらを説明できるはずですが、最初の連結またはグループ化ソリューションでは、一致しない属性値を持つノードの除外、および除外したいその他の要素の除外を考慮する必要があります (たとえば<expan>、以下の例)。

モック XML ファイルを次に示します。