実際にはかなり簡単に答えられると確信している問題がありますが、それを理解することはできず、以前にそれについて質問しようとしたのは過度に複雑でした.
画像ファイルに関連付けられたテキストを含む TEI XML から生成されるページがあります。
<sourceDoc xml:id="textContent">
<surfaceGrp xml:id="wall" n="West Wall">
<surface xml:id="EETS.QD.60">
<label>Verse 60</label>
<graphic url="ww_test_1.jpg"/>
</surface>
<surface xml:id="EETS.QD.63">
<label>Verse 63</label>
<graphic url="ww_test_2.jpg"/>
</surface>
<surface xml:id="EETS.QD.65">
<label>Verse 65</label>
<graphic url="ww_test_3.jpg"/>
</surface>
<surface xml:id="EETS.QD.66">
<label>Verse 66</label>
<graphic url="ww_test_4.jpg"/>
</surface>
<surface xml:id="EETS.QD.68">
<label>Verse 68</label>
<graphic url="ww_test_5.jpg"/>
</surface>
<surface xml:id="EETS.QD.69">
<label>Verse 69</label>
<graphic url="ww_test_6.jpg"/>
</surface>
</surfaceGrp>
</sourceDoc>
(余分な扱いを避けるために、ここの例からテキストを削除しました)
各テキストに関連付けられた画像のサムネイル画像に基づいて、ページの上部にヘッダーを生成します。www_test_1-thumbnail.jpg
などです。次の xsl を使用すると、ヘッダーを正しく表示できます (tei は tei 名前空間であり、で宣言できます) xmlns:tei="http://www.tei-c.org/ns/1.0"
。
<xsl:template match="tei:surface">
<div id="centerMenu">
<xsl:apply-templates select="tei:graphic" mode="list"/>
</div>
</xsl:template>
<xsl:template match="tei:graphic" mode="list">
<span class="menuitem" id="image_thumbnail">
<a class="nav_link">
<xsl:attribute name="href">
<xsl:value-of select="concat(substring(@url,1,string-length(@url)-4),'.html')"/>
</xsl:attribute>
<img class="thumbnail">
<xsl:attribute name="src">
<xsl:value-of
select="concat(substring(@url,1,string-length(@url)-4),'-thumbnail.jpg')"
/>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="../tei:label"/>
</xsl:attribute>
</img>
</a>
</span>
</xsl:template>
<surfaceGrp>
私の問題は、ラップされた要素のセットから別のセットにジャンプする必要がある場合があることです。たとえば、「南の壁」があった場合、<surfaceGrp>
サムネイル画像の次のブロックにジャンプできるように、次の要素の URL を取得できる必要があります。
<sourceDoc xml:id="textContent">
<surfaceGrp xml:id="wall" n="West Wall">
<surface xml:id="EETS.QD.60">
<label>Verse 60</label>
<graphic url="ww_test_1.jpg"/>
</surface>
<surface xml:id="EETS.QD.63">
<label>Verse 63</label>
<graphic url="ww_test_2.jpg"/>
</surface>
<surface xml:id="EETS.QD.65">
<label>Verse 65</label>
<graphic url="ww_test_3.jpg"/>
</surface>
<surface xml:id="EETS.QD.66">
<label>Verse 66</label>
<graphic url="ww_test_4.jpg"/>
</surface>
<surface xml:id="EETS.QD.68">
<label>Verse 68</label>
<graphic url="ww_test_5.jpg"/>
</surface>
<surface xml:id="EETS.QD.69">
<label>Verse 69</label>
<graphic url="ww_test_6.jpg"/>
</surface>
</surfaceGrp>
<surfaceGrp xml:id="wall" n="South Wall">
<surface xml:id="EETS.QD.70">
<label>Verse 70</label>
<graphic url="sw_test_1.jpg"/>
</surface>
</surfaceGrp>
</sourceDoc>
物事をさらに複雑にしている<surfaceGrp>
のは、要素が含まれる大きなブロックがあるため、すべてを別の要素でラップする必要がある場合があることです。これは次のようになります。
<sourceDoc xml:id="textContent">
<surfaceGrp xml:id="g.8" n="gathering">
<surfaceGrp xml:id="f.66" n="folio">
<surface n="recto">
<label>Verse 60</label>
<graphic url="pageimage1.jpg"/>
</surface>
<surface n="verso">
<label>Verse 63</label>
<graphic url="pageimage2.jpg"/>
</surface>
</surfaceGrp>
<surfaceGrp xml:id="f.67" n="folio>
<surface n="recto">
<label>Verse 65</label>
<graphic url="pageimage3.jpg"/>
</surface>
<surface n="verso">
<label>Verse 66</label>
<graphic url="pageimage4.jpg"/>
</surface>
</surfaceGrp>
</surfaceGrp>
<surfaceGrp xml:id="g.9" n="gathering">
<surfaceGrp xml:id="f.67" n="folio>
<surface n="recto">
<label>Verse 68</label>
<graphic url="pageimage5.jpg"/>
</surface>
<surface n="verso">
<label>Verse 69</label>
<graphic url="pageimage6.jpg"/>
</surface>
</surfaceGrp>
</surfaceGrp>
</sourceDoc>
だから私の質問は2つあります:
<surfaceGrp>
xsl で最初のツリーにすべてを表示するにはどうすればよいですか? 私の現在のコードは、子の 2 つのサーフェスを表示します<surfaceGrp>
が、すべてではありません。- 上記の例で、Verse 66 から Verse 68 へのリンクを生成するにはどうすればよいですか? また、Verse 65 から Verse 66 へのリンクとは根本的に異なりますか? 私が持っているいくつかの複雑なコードを使用して、次のアイテムと次のアイテムにジャンプできます
<surfaceGrp>
が、それは信じられないほどバグのあるソリューションであり、2 番目の<surfaceGrp>
レイヤーが追加されると完全に機能しなくなります。標準的な解決策がある場合は、正しい方向にうなずいていただければ幸いです。
私が持っているコードで現在 xsl が生成する html コードは次のとおりです。
<div id="centerMenu">
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_1.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_1-thumbnail.jpg" alt="First Panel" />
</a>
</span>
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_2.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_2-thumbnail.jpg" alt="Second Panel" />
</a>
</span>
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_3.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_3-thumbnail.jpg" alt="Third Panel" />
</a>
</span>
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_4.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_4-thumbnail.jpg" alt="Fourth Panel" />
</a>
</span>
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_5.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_5-thumbnail.jpg" alt="Fifth Panel" />
</a>
</span>
<span class="menuitem" id="image_thumbnail">
<a class="nav_link" href="ww_test_6.html">
<img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_6-thumbnail.jpg" alt="Sixth Panel" />
</a>
</span>
</div>
<div id="rightMenu">
<span class="menuitem" id="previousItem">
<a class="nav_link">Previous</a>
</span>
<span class="menuitem" id="nextItem">
<a class="nav_link" href="ww_test_2.html">Next</a>
</span>
</div>