0

https://xsltfiddle.liberty-development.net/bFDb2D3/4の XSLT 2.0、スタイルシート、およびデータ

tei-xml でエンコードされた中世の文書を、ユーザーが文書の 2 つの異なるビューを切り替えたり、翻訳やさまざまな脚注 ( など) を表示したりできる Web ページに変換しています。これには、出力するために複数の処理レイヤーが必要です。

  • ユーザーが切り替えることができる 2 つのラテン バージョン (「inter」と「diplo」) (同じ tei マークアップから派生)
  • ほとんど変換されていない翻訳版 (段落の書式設定と斜体のみ)
  • 脚注 # a、b、c などを使用した重要な装置。
  • 脚注 # 1、2、3 などを使用した歴史的な脚注。

modes処理のレベルを処理するために使用しています。各モードは単独で正常に動作しますが、一緒にすると出力が失われます。

何を出力する必要があります:

  1. <div class="inter"><p>すべての変換モードinter+ fn-add-marker [これには<a href>、テキストに上付き文字と数字が含まれている必要があります]

  2. <div class="diplo"><p>すべての変換モードdiplo+ fn-add-marker [これには [テキスト] 、行番号、上付き文字、およびテキスト内の数字を含める必要があります]

  3. <div><p>翻訳付き

  4. <div>重要な装置で

  5. <div>脚注付き

XSLTfiddle の出力は次のとおりです。

  1. URLも上付き文字もOK!上付き数字の欠落(モードfn-add-marker)
  2. 上付き文字OK!行番号と [テキスト]または内(ie. ) と欠落した上付き数字(mode )を除いてOK<persName><placeName><xsl:template match="tei:lb"> <xsl:template match="tei:supplied">fn-add-marker
  3. わかった!
  4. わかった!
  5. わかった!

#2に関して、欠落している行#と[テキスト]は、他のテンプレートを処理して引き渡さないテンプレートの結果であるように見えます<persName><placeName>? (テンプレートは 173 ~ 218 行にあります)

モードに関するすべてのテンプレートfn-add-markerは、41 ~ 77 行にあります。

よろしくお願いします。

4

1 に答える 1

2

基本的に XSLT 2 では、名前付きモードで作業したら、特定のモードに属するテンプレートで、 egを使用して、内部でmode="foo"egmode="foo"またはより一般的なものを使用して、そのモードで処理が続行されるようにする必要があります。詳細については、 https://www.w3.org/TR/xslt20/#element-apply-templatesを参照してください。mode="#current"xsl:apply-templates

https://xsltfiddle.liberty-development.net/gWmuiK7でXSLT を試してスタイルシートを修正し、https://xsltfiddle.liberty-development.net/bFDb2D3/5で固定スタイルシートを適用した結果を確認できます. modeそのプログラムによるアプローチが適切なツールであるかどうかはわかりませんが、推奨される使用モードを示すのに役立つ場合がありますxsl:apply-templates

次に、追加されたマーカーを 2 つの新しいモードで確実に処理する必要があると思います。

<!-- adds fn numbers -->
<xsl:template match="tei:date[@type='deposition_date']" mode="inter dilpo">
    <xsl:apply-templates mode="#current"/>
    <xsl:apply-templates select="." mode="number"/>
</xsl:template>

<xsl:template match="tei:note[@type='public'] | tei:fn-marker" mode="inter diplo">
    <xsl:apply-templates select="." mode="number"/>
</xsl:template>

<xsl:template match="tei:date[@type='deposition_date'] |  tei:note[@type='public'] | tei:fn-marker" mode="number">
    <sup>
       <xsl:number count="tei:date[@type='deposition_date'] |  tei:note[@type='public'] | tei:fn-marker" format="1" level="any"/>
    </sup>
</xsl:template>
<!-- end of footnote transformations -->

https://xsltfiddle.liberty-development.net/bFDb2D3/6 51 行目から 66 行目。

于 2018-10-22T08:18:53.547 に答える