当前位置:  开发笔记 > 编程语言 > 正文

为什么我的XSLT变量不能替换它们的值?

如何解决《为什么我的XSLT变量不能替换它们的值?》经验,为你挑选了3个好方法。

我试图使用XSLT变量并没有取得多大成功,希望我只是做一些愚蠢的事情.

我有以下代码片段:



    
      

所以我希望有一个变量'config'设置为我的顶级元素'query'的'config'属性的值.

然后我尝试在我的样式表中稍后使用该变量,例如:


    {$config}

但是我在输出HTML文档中看到的输出是:


    {$config}

所以价值没有像我预期的那样被替换.

我认为这可能是最简单的情况,所以我做了一些愚蠢的事情!请帮忙,谢谢!


更新感谢所有回复的人,我误解了我在属性或外部工作的不同背景.很好地排除了我的问题!

如果可以的话,我会接受两个答案,即我所拥有的答案,以及@Aaron Digulla,它解释了属性的问题.



1> Wayne Burket..:

这里有两个看似相同的问题,但它们略有不同:1)如何按名称引用变量?2)我在哪里可以通过名称引用变量?

首先,始终使用$varname语法引用变量.其次,这可以在允许表达的任何地方完成.这是第二部分似乎混淆了.首先,默认情况下,元素或属性的值将按字面输出,因此在以下示例中实际上未引用任何变量:

$test or {$test}

输出将完全匹配输入的内容.

要输出变量的值,我们需要在允许表达式的地方引用它.在元素内容中,我们使用xsl:value-of; 在被视为属性值模板的属性中(例如,文字结果元素的属性),表达式由花括号分隔{}.假设以下声明:


......然后是以下内容:


...结果是:

value

关于AVT的一些分离说明和value-of:

在这两种情况下,变量都被引用为$test.AVT中的大括号不是变量引用的一部分; 它们是表达分隔符.

在任何一种情况下,表达式都不必包含对变量的引用; 任何XPath表达式都是允许的.

并非XSLT文档中的所有属性都被视为属性值模板.例如,请注意xsl:valueselect属性已经接受一个表达式作为内容.

问题:为什么不能value-of在属性中使用这样的?

"/>

答案:因为XSLT文档必须包含格式良好的XML(而不是).

问题:为什么不能{$varname}在元素内容中使用?

Glib回答:因为XSLT的创建者没有这样设计.



2> Laurent..:

在样式表中,您必须使用:


代替:

{$config}



3> Aaron Digull..:

{$config}仅适用于XSLT元素的属性.(注意:括号内的美元因为完整的XPath表达式必须用大括号括起来)

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有