考慮這個遞歸XSLT模板:的xsl:for-each循環意外的結果在條件測試
<xsl:template name="SUBREPORT_FIELDS" >
<xsl:for-each select="current()/section/@name">
<xsl:choose>
<xsl:when test="current()/section/@name = $pSectionName">
<xsl:call-template name="FieldSezione"/>
<xsl:call-template name="FIELDS"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="SUBREPORT_FIELDS"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
而下面的XML輸入文件:
<box name="box3">
<section name="sEmicrania">
<box name="box4">
<treecombobox name="tc"/>
<textmemo name ="tm"/>
</box>
<box name="box4">
<section name="sZona">
<box name="box5">
<label name="label1"/>
<textmemo name="tmZona"/>
</box>
</section>
</box>
</section>
</box>
變量$ pSectionName將作爲其值「sEmicrania」或「sZona」;這些是兩個「<節>」元素的屬性「名稱」的值。
當變量$ pSectionName的值爲sEmicrania時,模板正確地將條件測試評估爲true,但如果變量的值爲「sZona」,則測試評估爲false。
我希望測試在兩種情況下均返回true。
請發表** **重複性的例子 - 請參見:[MCVE] –
我認爲你需要改變'current()/ section/@ name = $ pSectionName'就是'section/@ name = $ pSectionName'。 'current()'與'.'不同,儘管在大多數地方它們的行爲方式都是一樣的 – Pawel
「傳遞變量」是什麼意思?您的模板未設置爲接受參數。 – Matthew