我非常了解这个主题,但实际上我需要定义一个参数并让它的值发生变化,所以我选择将它放在for-each循环的顶部,使其成为本地,但是当我潜水时进入一个嵌套标签,例如每个循环的anoter,我不能再从更高的那个访问本地变量。我的问题是它们不会被新的嵌套循环继承吗?他们是否可以看到变量,即使它们应该在范围内?
<xsl:for-each select="ns0:BxfMessage/ns0:BxfData/ns0:Content" >
<xsl:if test="string(@version) = 'Series'">
<SERIES>
<xsl:param name="SeriesHouseNumber">
<xsl:value-of select="string(ns0:BxfMessage/ns0:BxfData/ns0:Content/ns0:ProgramContent/ns0:ContentMetaData/ns0:ContentId/ns0:HouseNumber)"/>
</xsl:param>
<UniqueIDFieldName>
<xsl:value-of select="string(ns0:ProgramContent/ns0:ContentMetaData/ns0:ContentId/ns0:HouseNumber)"/>
</UniqueIDFieldName>
<PROGID1>
<xsl:value-of select="string(ns0:ProgramContent/ns0:ContentMetaData/ns0:ContentId/ns0:HouseNumber)"/>
</PROGID1>
<SER_TITLE>
<xsl:value-of select="string(ns0:ProgramContent/ns0:ContentMetaData/ns0:Name)"/>
</SER_TITLE>
<xsl:for-each select="../ns0:Content" >
<xsl:if test="string(@version) = 'Title'">
<CHILDREN>
<EPISODE>
<xsl:if test="$SeriesHouseNumber = string(ns0:ProgramContent/ns0:ContentMetaData/ns0:ContentId/ns0:AlternateId)">
<ORIG_CT_TITLE>
<xsl:value-of select="string(ns0:ProgramContent/ns0:ContentMetaData/ns0:Name)"/>
</ORIG_CT_TITLE>
无法访问系列门牌号变量,这导致我在每个
的嵌套内部感到痛苦答案 0 :(得分:0)
使用<xsl:variable>
代替<xsl:param>
。
<xsl:variable
name="SeriesHouseNumber"
select="string(ns0:BxfMessage/ns0:BxfData/ns0:Content/ns0:ProgramContent/ns0:ContentMetaData/ns0:ContentId/ns0:HouseNumber)"/>
如果您仍希望使用参数(以便稍后替换),请将<xsl:param>
置于<xsl:template>
内,而不是嵌套在其他元素中。