私の XML ファイルには、次のような TEI マイルストーン要素が<handShift new="#DP1053/>
あります。常に<text>
コンテンツの先頭に 1 つ存在しますが、その後に、この種のタグがいくつかあり、2 つまたは 3 つの異なる属性値のいずれかが<text>
要素全体に散らばっており、特定の書記が最後に続いて取り上げた場所を示します。attribute の値は、エレメントの属性として登録された TEI ヘッダー内の定義を@new
指します。@xml:id
<handNote/>
XSLT 2.0 での私の目的は、各書記が書いたテキストを連結して、各書記の作業を個別に照会できるようにすることです。推奨される解決策にgroup-starting-with
. 代わりに、私自身の本能は実行することです
- 実行中の筆記者の手を反復する
for-each
ループ - a
string-join
- すべてのテキスト ノード
- ここで、現在のループ反復で処理された手と一致する
<handShift/>
属性の値を持つ先行は、属性値が一致しない先行よりも近いです。@new
<handShift/>
HTML に変換する XSLT 2.0 スタイルシートの私の試行構文は次のとおりです。
<xsl:for-each select="//tei:handNote[@xml:id != '']">
<xsl:variable name="hand" select="./@xml:id"/>
<p><xsl:value-of select="$hand"/>: <xsl:value-of select="string-join(//tei:text//text()[preceding-sibling::tei:handShift[@new = concat('#',$hand)] >> preceding-sibling::tei:handShift[@new != concat('#',$hand)]])"/></p>
</xsl:for-each>
ただし、これは、テキスト内の最終マイルストーンに続くテキスト ノードのみを返し、その最終マイルストーンに一致する属性値を選択する for-each 反復でのみ返します。私は>>
間違いなくステートメントを間違っており、このアプローチまたは別のグループ化ベースのアプローチについてアドバイスをいただければ幸いです。
この連結をマスターしたら<add hand="DP1054">addition</add>
、この性質の一致しないコンテンツを除外し、一致を含めることによって、 - タイプのコンテンツ (つまり、現在のスティントのものと一致しない手による修正) を方程式に追加する必要があることに言及する必要があります。コンテンツは一致しない書記のスティント内にありますが、これを「正しい」場所の連結に追加する必要があるとは必ずしも予想していません。したがって、2 つのかなり単純な追加ステップでこれらを説明できるはずですが、最初の連結またはグループ化ソリューションでは、一致しない属性値を持つノードの除外、および除外したいその他の要素の除外を考慮する必要があります (たとえば<expan>
、以下の例)。
モック XML ファイルを次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TEI>
<TEI>
<teiHeader>
<fileDesc/>
<sourceDesc>
<msDesc>
<physDesc>
<handDesc>
<handNote xml:id="DP1054"/>
<handNote xml:id="DP1053"/>
</handDesc>
</physDesc>
</msDesc>
</sourceDesc>
</teiHeader>
<text>
<body>
<p><handShift new="#DP1054"/>I'LL REPRESENT THE WORK OF HAND 1054 IN ALLCAPS <handShift new="#DP1053"/>and I'll represent the work of hand 1053 in lowercase <handShift new="#DP1054"/>THE IDEA BEING THAT IN THE END ALL UPPERCASE TEXT SHOULD BE CONCATENATED <handShift new="#DP1053"/>separately from the sentence case content. Of course reality is a little more <add hand="#DP1054">COMPLEX</add>: we have <hi rend="color(green)">other nodes intervening</hi>, <handShift new="#DP1054"/>AND I WONDER WHETHER THESE WILL MESS WITH THE CONCEPT OF <choice>
<abbr>SBLS</abbr>
<expan>S<ex>I</ex>BL<ex>ING</ex>S</expan>
</choice> <handShift new="#DP1053"/> (I will filter out nodes with `tei:expan` ancestors and nonmatching `add` elements; that's not the part I am having difficulty with).</p>
</body>
</text>
</TEI>