2010-09-09 31 views
1

我在我的xml文档中将两个变量countryVar和langVar插入节点。利用xslt中的变量

<link><![CDATA[/<% = countryVar %>/<% = langVar %>/products/index.aspx]]></link> 

我正在像这样使用xslt中的链接节点。

<a href="{link}"><xsl:value-of select="linkName"/></a> 

链接的值打印出来就像它在xml文档中一样。有没有办法让两个vb.net变量countryVar和langVar处理和打印出那里的价值?这些值存储在缓存中并被拉入页面。

感谢

+0

问得好(+1)。看到我的答案有两种不同的解决方案 – 2010-09-09 22:43:29

回答

0

XSLT不知道的(VB.NET)计划发起变革的变量什么。

有两种不同的方式来变量的值传递给转型:

  1. 将它们作为全局参数的改造。阅读更多如何与一起做XslCompiledTransform.Transform() :::: here

  2. 修改源XML文档(加载它之后,包含在某些节点中的变量的值

我推荐上述方法1.

UPDATE。:

很明显,您正在使用上述方法2的变体,在这种情况下,将变量的值放在th中并不是一个好主意同一个字符串。

很多优于:

<link><![CDATA[/<% = countryVar %>/<% = langVar %>/products/index.aspx]]></link> 

(这将是简单的事后用XSLT处理,方法是:

<link> 
    <country><% = countryVar %></country> 
    <slash>/</slash> 
    <lang><% = langVar %></lang> 
    <tail-link>/products/index.aspx</tail-link> 
    <linkName>Whatever link text</linkName> 
</link> 

然后是处理这个XSLT代码将只是

<a href="{link}"><xsl:value-of select="linkName"/></a> 

(假定您有<xsl:strip-space elements="*"/>在样式表的全局级别)。

和变量的值

link/country 

link/lang 
+0

@Dimitre:你的答案很重要。但我认为变量值现在包含在输入中。 OP可以解析'link'元素...... – 2010-09-10 00:58:25

+0

@Alejandro:将变量值放在字符串中是没有意义的!所以,我给了他一个很好的建议。另外,在提供的XML文档中没有'linkName'元素。 – 2010-09-10 01:53:06

+0

@Alejandro:他说他没有得到价值,但他得到了他向我们展示的** **。所以,这根本不是一个XSLT问题,而是一个ASP问题! – 2010-09-10 01:55:58