rtf stil sayfasına xsl-fo oluşturuyorum. Elimdeki problemlerden biri de xsl-fo belgesindeki sayısız ölçü birimini twip'e (rtf ölçü birimi) dönüştürmektir.xsl dönüştür/çevir şablonu
kodözel bir parça sütun genişlikleri caluclates:
<xsl:value-of select="sum(preceding-sibling:
:fo:table-column/@column-width) + @column-width"/>
... sorun /@column-width
değeri, bu nedenle zaman 20px
(20 piksel) için 1in
(1 inç) bir şey olabilir olmak Toplamı başarısız olurum.
@column-width
dönüştürmek gerekir
: 1pt = 19.95 twips, 1px = 15 twips, 1pc = 240 twips, 1in = 1440 twips, 1cm = 567 twips, 1mm = 56.7 twips, 1em = 240 twips
muhtemelen dönüştürme yapabilirsiniz bir yöntem yazabilir, ama ben eminim yapmak translate()
fonksiyonun faydalanmak için bazı yol var Bu çok daha etkilidir.
ayırın, benim xsl tüm bu büyük değil, bu yüzden bunu başarmak için nasıl bir örnek İstediğim şey bulmayı başardılar
DÜZENLEME
takdir edilecektir ama hiçbir fikrim yok<xsl:template match="@*" mode="convert-to-twips">
<xsl:variable name="scaling-factor">
<xsl:choose>
<xsl:when test="contains (., 'pt')">19.95</xsl:when>
<xsl:when test="contains (., 'px')">15</xsl:when>
<xsl:when test="contains (., 'pc')">240</xsl:when>
<xsl:when test="contains (., 'in')">1440</xsl:when>
<xsl:when test="contains (., 'cm')">567</xsl:when>
<xsl:when test="contains (., 'mm')">56.7</xsl:when>
<xsl:when test="contains (., 'em')">240</xsl:when>
<!-- guess: 1em = 12pt -->
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="numeric-value"
select="translate (., '-.ptxcinme', '-.')"/>
<xsl:value-of select="$numeric-value * $scaling-factor"/>
</xsl:template>
İyi soru, +1. Tam ve kolay bir çözüm için cevabımı görün. –
Evet, ve bu bir * tam * çözümdür - sadece sözde kod değil. call-template': –
Benim cevabım size 'xsl kullanarak şablon kuralını nasıl kullanabileceğine ilişkin sadece bir örnektir olmak istiyor. Translate'yi nasıl kullandığınız konusunda da küçük bir hata var. Cevabımı gör, umarım yardımcı olur. Flynn1179 @ –