我正在使用XSLT 3.0將XML文件輸出爲HTML,並且在刪除逗號和句點之前的空格時遇到了問題。下面是我遇到的具體問題的一個示例:XML中包含行/回車符,它們正在HTML中複製。通常這不是問題,因爲瀏覽器將白色空間摺疊到一個空白區域;不過,正如您在下面的示例中所看到的,它在逗號和句點之前保留了一個空格。 (注:關於XML:這是一箇中世紀手稿的文本編碼,因此它可以有不同的元素,並且它可以出現在不同層次的其他元素中嵌套)。XML - XSLT到HTML轉換 - 消除特定的行/回車
XML:
<persName>
<choice>
<orig>ar. p<hi rend="sup">a</hi>der</orig>
<reg>Arnaldum Prader</reg>
</choice>
</persName> et socium eius hereticos et vidit ibi cum eis <persName>
<choice>
<orig>P. barrau</orig>
<reg>Poncium Barrau</reg>
</choice>
</persName>, <persName>
<choice>
<orig>Iordanetū del maſ</orig>
<reg>Iordanetum del Mas</reg>
</choice>
</persName>, <persName>
<choice>
<orig>Iordanū de quiders</orig>
<reg>Iordanum de Quiders</reg>
</choice>
</persName> et <persName>
<choice>
<orig>W. Vitał</orig>
<reg>Willelmum Vitalis</reg>
</choice>
</persName> predictum et <persName>
<choice>
<orig>ux̄ dc̄ī W. Vitał</orig>
<reg>uxor dicti Willelmi Vitalis</reg>
</choice>
</persName>.
XML模板:
<!-- format super/sub scripts -->
<xsl:template match="tei:hi" name="template_supersub">
<xsl:choose>
<xsl:when test="@rend ='sup'"><sup class="subsup"><xsl:apply-templates/></sup></xsl:when>
<xsl:when test="@rend ='sub'"><sub class="subsup"><xsl:apply-templates/></sub></xsl:when>
</xsl:choose>
</xsl:template>
<!-- parse persName into <spans> -->
<xsl:template match="tei:persName/tei:choice/tei:reg">
<span class="interpretive"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match="tei:persName/tei:choice/tei:orig">
<span class="diplomatic"><xsl:apply-templates/></span>
</xsl:template>
當前HTML輸出:
<span class="diplomatic">ar. p<sup class="subsup">a</sup>der</span>
<span class="interpretive">Arnaldum Prader</span>
et socium eius hereticos et vidit ibi cum eis
<span class="diplomatic">P. barrau</span>
<span class="interpretive">Poncium Barrau</span>
,
<span class="diplomatic">Iordanetū del maſ</span>
<span class="interpretive">Iordanetum del Mas</span>
,
<span class="diplomatic">Iordanū de quiders</span>
<span class="interpretive">Iordanum de Quiders</span>
et
<span class="diplomatic">W. Vitał</span>
<span class="interpretive">Willelmum Vitalis</span>
predictum et
<span class="diplomatic">ux̄ dc̄ī W. Vitał</span>
<span class="interpretive">uxor dicti Willelmi Vitalis</span>
.
最後,問題的輸出:
Arnaldum Prader et socium eius hereticos et vidit ibi cum eis Poncium Barrau,Iordanetum del Mas,Iordanum de Quiders et Willelmum Vitalis predictum et uxor dicti Willelmi Vitalis。
strip-space,replace(),translate()的各種組合沒有針對此問題。它們通常會導致元素之間的每個空白都崩潰。
我理想上喜歡的是在逗號和句號之前沒有空格,逗號或句號之後沒有空格。但我無法找到一種機制,更不用說黑客,來解決這個問題。謝謝。
所需的HTML輸出:
<span class="diplomatic">ar. p<sup class="subsup">a</sup>der</span>
<span class="interpretive">Arnaldum Prader</span> et socium eius
hereticos et vidit ibi cum eis <span class="diplomatic">P.
barrau</span><span class="interpretive">Poncium Barrau</span>, <span
class="diplomatic">Iordanetū del maſ</span><span
class="interpretive">Iordanetum del Mas</span>, <span
class="diplomatic">Iordanū de quiders</span><span
class="interpretive">Iordanum de Quiders</span> et <span
class="diplomatic">W. Vitał</span><span class="interpretive">Willelmum
Vitalis</span> predictum et <span class="diplomatic">ux̄ dc̄ī W.
Vitał</span><span class="interpretive">uxor dicti Willelmi
Vitalis</span>.
是否在樣式表中添加''解決了問題? –
@Tim C--它解決了一個問題並引入了其他問題。逗號和句點之前的空格問題已解決,但它也會摺疊需要空格的元素之間的空格。 – idjet
您是否可以編輯您的問題以顯示您需要的實際html輸出?謝謝! –