私のテキストベースのXMLコーパスでは、(TEIスキーマを使用して)さまざまなデータのマークアップがたくさんあります。これらのドキュメントをPDFに変換するプロセスの一環として、xsl:foが変換するための単純化されたファイルに前処理しています。その前処理では、マークアップを見つけて<sup>incremented integer</sup>
を追加して脚注番号を割り当てています。XSLはコピーで新しい空白/改行を防ぐ
このような行:本で処理
<p>
<seg>
<date type="deposition_date">Item anno et die quo supra</date>. <persName>P Lapassa Senior</persName> testis iuratus idem per omnia quod predictus <persName>Hugo de Mamiros</persName>.
</seg>
</p>
:
<xsl:template match="tei:date">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy><sup><xsl:number count="date[@type='deposition_date'" from="tei:p" format="1" level="any"/></sup>
</xsl:template>
出力する(<sup>
ための新しい行に注意してください):
<p>
<seg>
<date type="deposition_date">Item anno et die quo supra</date>
<sup>1</sup>. <persName>P Lapassa Senior</persName> testis iuratus idem per omnia quod predictus <persName>Hugo de Mamiros</persName>.
</seg>
</p>
結果がときにありますxsl:foは<sup>
を上付き文字に処理し、taそうのように、目標確認およびSuperscript:
アイテムアノらクオ前掲死にます。 P Lapassaシニア精巣iuratus idem per omnia quod predictus Hugo de Mamiros。
新しい行/改行がコピープロセスに導入されないようにする方法はありますか?
追加情報:<xsl:strip-space elements="*"/>
がxslドキュメントにあります。 Saxon PE 9.6およびHE 9.8に対して試験された。
ありがとうございます。
入力から改行がコピーされていますか?あなたが提示したコードスニペットが与えられているので、私は入力にその改行が見当たらないので、おそらく 'xsl:output indent =" yes "'を使用して導入されていると思います。 –
私はあなたがそれを働かせたことは驚くべきことである - それは本当に犯人だった。余分な質問:テクニカルフォーマットで余分な空白が導入されるのはなぜですか?手動でインデントした場合、コードを読みやすくするために多くの場所にあるように、同じ問題が発生することはありません。あなたの経験の恩恵を再びお寄せいただきありがとうございます。 – idjet
まあ、それは様々な要因に依存していますが、インデントのコードあなたがXSLTの内側に書くならば、あなたは最も空白の内部スタイルシートでhttps://www.w3.org/TR/xslt20/#stylesheet-strippingその結果を考慮する必要がありますデフォルトでは削除されます。ソース文書の場合、ルールはhttps://www.w3.org/TR/xslt20/#stripとは異なります。 –