Variables 为什么xslt变量不展开?
我继承了一些工作不正常的xslt代码。我已经研究了它,并在这里和其他地方研究了各种问题,但仍然无法孤立这个问题。代码中有许多链接试图使用xslt变量link_值。无论它在哪里被引用,它都是以“{$link_value}”格式出现的,这就是混乱开始的地方。在这里的一些答案中,说明变量必须在大括号中,而在其他答案中,大括号不在那里。有些人说它周围没有引号,有些人说它有引号。link_值是一个字符串,引用时需要引号。放置在link_value中的值位于相应的XML中。然后是范围问题,我已经看到了很多答案,都是矛盾的。有人能告诉我为什么链接值不能正确扩展吗 链接\ u值引用//公司领导/标题,该标题也在第195行引用,并正确显示在网页上 此外,还有一个$(“#roatile”)。单击(function()条目(第176行),它也使用link_值。此条目在网页上给我一个指针,但当我单击它时,什么也没有发生。第180行的条目也有相同的问题。关于此条目有帮助吗 我对XML进行了压缩,使其保持较小,并且只显示相关数据。 chartsdatareport.XML:Variables 为什么xslt变量不展开?,variables,xslt,expansion,Variables,Xslt,Expansion,我继承了一些工作不正常的xslt代码。我已经研究了它,并在这里和其他地方研究了各种问题,但仍然无法孤立这个问题。代码中有许多链接试图使用xslt变量link_值。无论它在哪里被引用,它都是以“{$link_value}”格式出现的,这就是混乱开始的地方。在这里的一些答案中,说明变量必须在大括号中,而在其他答案中,大括号不在那里。有些人说它周围没有引号,有些人说它有引号。link_值是一个字符串,引用时需要引号。放置在link_value中的值位于相应的XML中。然后是范围问题,我已经看到了很多答
<chartsdatareport>
<privateroaroeratiosdata>
<datapoint></datapoint>
</privateroaroeratiosdata>
<privateincomeratiosdata>
<datapoint></datapoint>
</privateincomeratiosdata>
<companyheader>
<id>300902</id>
<title>Bank of America NA</title>
<address>100 N Tryon St, Ste 170 </address>
<citystatezip>Charlotte, NC 28202</citystatezip>
<phone>(980) 335-3561</phone>
<fax>(704) 386-0981</fax>
<internetaddress>www.bankofamerica.com</internetaddress>
</companyheader>
<financial>
</financial>
<bankinsightrating>
</bankinsightrating>
<financialsummary>
</financialsummary>
<loancomposition>
</loancomposition>
<depositscomposition>
</depositscomposition>
</chartsdatareport>
300902
美国银行
($000)
'
\'
roeValues.push();
roaValues.push();
四分之一。推(“”);
tier1riskbasedcapital.push();
totalriskbasedcapital.push();
杠杆。推();
tangcomequity.push();
toteQTytotasets.push();
corecaploanlossres.push();
intgrowthrateqtycap.push();
totalinterestincome.push();
totalinterestpense.push();
不感兴趣的。推();
顶推()按钮;
nplsloans.push();
npattalassets.push();
ncoavgloans.push();
reservesgrossloans.push();
totaloansnet.push();
avgearnasst.push();
无轴承沉积物。推动();
TotalNoneLearningAssets.push();
netIncomeValues.push();
netInterestIncomeValues.push();
收入四分之一。推动(“”);
下面是我们另一段代码的片段,这段代码很好用。但我认为由于所有代码都在一起:
<tr class="evenrow"><td>Top Holding Company:</td>
<td>
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="escapos">\'</xsl:variable>
<xsl:variable name="link_value">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="TOP_HC_NAME" />
<xsl:with-param name="replace" select="$apos"/>
<xsl:with-param name="by" select="$escapos"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="TOP_HC!=''">
<a href="javascript:void(0)" onclick="topHC('{TOP_HC}','{$link_value}')"><xsl:value-of select="TOP_HC_NAME" /></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="TOP_HC_NAME" />
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
顶级控股公司:
'
\'
提前感谢您的帮助。提取变量值的XPath表达式是不带引号的
$variableName
,但问题是样式表中的哪些位置被解释为XPath表达式,而哪些位置不是
在文本结果元素的属性值中,可以在大括号中包含XPath表达式,并对它们进行计算,这称为“属性值模板”语法
<a onclick="topHC('{TOP_HC}','{$link_value}')">
您不在属性值模板中,{$link\u value}
按字面形式输出,而不是作为XPath表达式处理。在这种情况下,要计算XPath,需要使用的值
。在xsl:text
中包装文字段可能更清晰,这样您就可以在不向结果中引入新行的情况下打断XSLT中的行:
<xsl:attribute name="onclick">
<xsl:text>parent.getHighlineTop().newTab('...','</xsl:text>
<xsl:value-of select="$link_value"/>
<xsl:text>')</xsl:text>
</xsl:attribute>
parent.getHighlineTop().newTab(“…”,”
')
谢谢。感谢您的解释。
<xsl:attribute name="onclick">parent.getHighlineTop().newTab('...','{$link_value}')</xsl:attribute>
<xsl:attribute name="onclick">
<xsl:text>parent.getHighlineTop().newTab('...','</xsl:text>
<xsl:value-of select="$link_value"/>
<xsl:text>')</xsl:text>
</xsl:attribute>