我的XML文件模板類似領域的XSLT
...
<element1>
<year>1</year>
<month>5</month>
<days>3</days>
</element1>
<element2>
<year>2</year>
<month>4</month>
<days>5</days>
</element2>
...
我的XSL-FO模板
<fo:block>
<xsl:value-of select="//element1/years"/>
<xsl:text> years </xsl:text>
<xsl:value-of select="//element1/month"/>
<xsl:text> month </xsl:text>
<xsl:value-of select="//element1/days"/>
<xsl:text> days </xsl:text>
</fo:block>
...
<fo:block>
<xsl:value-of select="//element2/years"/>
<xsl:text> years </xsl:text>
<xsl:value-of select="//element2/month"/>
<xsl:text> month </xsl:text>
<xsl:value-of select="//element2/days"/>
<xsl:text> days </xsl:text>
</fo:block>
正如你所看到的,這裏是一個代碼相似的塊。 我如何簡化這個表達式? 什麼樣的模板應該使用?
我寫了一個模板,這樣
<xsl:template match="element1">
<xsl:value-of select="years"/>
<xsl:text> years </xsl:text>
<xsl:value-of select="month"/>
<xsl:text> month </xsl:text>
<xsl:value-of select="days"/>
<xsl:text> days </xsl:text>
</xsl:template>
,並用它
<fo:block>
<xsl:apply-templates select="element1"/>
</fo:block>
但它並不適用於element2中......
不知道所有的細節,我會說,有兩個元素「元素1」和「元素2」具有相同的結構氣味的壞的XML設計,和我通常的政策設計糟糕的XML輸入是將任務分成兩部分:首先進行一次轉換,清理XML並將其轉換爲設計良好的XML,然後再進行另一種轉換,以完成真正的工作。 –