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 スタイルシートの私の試行構文は次のとおりです。

<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)] &gt;&gt; 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>
4

1 に答える 1