0
我有兩個模板,這樣的...一個創建普通包名稱和另一個追加「 - 非」的名稱,如果它通過一定的條件下,如圖如何在XSLT調用模板從另一個模板1.0
<xsl:template match="text()" name="checkForAgency">
<xsl:param name="Name"/>
<xsl:param name="Agency"/>
<xsl:if test="contains($Agency,'AG') ">
<xsl:value-of select="concat($Name,' - Non')"/>
</xsl:if>
</xsl:template>
<xsl:template match="text()" name="createPackageName">
<xsl:param name="Type"/>
<xsl:if test="contains($Type,'NEW')">
<xsl:value-of select="concat('New',' Goal')"/>
</xsl:if>
<xsl:if test="contains($Type,'AMD')">
<xsl:value-of select="concat('Amended',' Goal')"/>
</xsl:if>
<xsl:if test="contains($Type,'REN') or contains($Type,'ARN')">
<xsl:value-of select="concat('Renewal',' Goal')"/>
</xsl:if>
</xsl:template>
從
<xsl:variable name="NonAgencyPackageName">
<xsl:call-template name="createPackageName">
<xsl:with-param name="Type" select="ID"/>
</xsl:call-template>
</xsl:variable>
<xsl:element name="PackageName">
<xsl:call-template name="checkForAgency">
<xsl:with-param name="Name" select="$NonAgencyPackageName"/>
<xsl:with-param name="Agency" select="Output"/>
</xsl:call-template>
</xsl:element>
調用這些模板,如果ID有「新建」,包名應該有新的目標,如果輸出有「AG」,那麼名字應該是新的目標 - 非。 其他名稱應該是新的目標。我只想要兩個單獨的模板。我現在得到空值了。請幫助我實現這個目標以及如何糾正它?
既有匹配='和'name ='的模板我從未見過 - 它有'match ='(或許''mode = ')或'name ='但不匹配='然後,建議再次提出你的xslt書:)或顯示(編輯問題)你的輸入和期望的輸出xmls看起來像 –
@StefanHegny是正確的建議你檢查你的模板:除非你在樣式表的其餘部分做了非常聰明的事情(如果你聰明,你不會有這個問題),在命名模板上有一個'match'屬性是毫無意義的。不是非法的(具有'match'和'name'的模板都很好),但在這種特殊情況下毫無意義,因此讓維護程序員感到困惑。 –