<xsl:template match="foobar">
<xsl:if test="a[name = 'foo']">
<xsl:apply-templates select="x/y[1]|x/y[2]" />
</xsl:if>
<xsl:if test="a[name = 'bar']">
<xsl:apply-templates select="x/y[3]|x/y[4]|x/y[5]" />
</xsl:if>
</xsl:template>
我想通過位置路徑表達式 「X/Y [1] | X/Y [2]」 和X/Y [3] | X/Y [ 4] | x/y [5]作爲參數,因爲這個值可能會在將來發生變化,我不想編輯模板,只能編輯參數定義。我想使用上面的模板作爲傳遞位置路徑用謂詞爲模板參數
<xsl:template match="foobar">
<xsl:if test="a[name = 'foo']">
<xsl:apply-templates select="$param1" />
</xsl:if>
<xsl:if test="a[name = 'bar']">
<xsl:apply-templates select="$param2" />
</xsl:if>
</xsl:template>
據我所知這是不可能的。外部化位置路徑表達式的最佳方式是什麼?
提前
動態評估在XSLT 1.0和XSLT 2.0中均不可用。它可能在XSLT 3.0中可用(現在具有工作草案的狀態)。克服這種障礙的一種方法是進行轉換,根據其源XML文檔生成新的樣式表 - 然後執行新生成的轉換。 –
非常感謝您的提示。新樣式表的生成是一個選項。 – Toru