我在XSL 1.0样式表中创建全局变量时遇到了麻烦。我想从我正在尝试转换的XML中的XML标记的值创建变量。这是我的XML的样子:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<config name="test report" xmlns="http://www.example.com/CONFIG">
<the_one_i_want>1000</the_one_i_want>
<!-- lots of other stuff -->
</config>
这就是我的XSL的样子:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:CONFIG="http://www.example.com/CONFIG">
<xsl:output method="html"/>
<xsl:variable name="normal_global_variable">100</xsl:variable><!-- This works fine -->
<xsl:variable name="variable_from_xml"><xsl:value-of select="/config/the_one_i_want/value"/></xsl:variable><!-- This does not work -->
<!-- lots of other stuff -->
</xsl:stylesheet>
所以我希望variable_from_xml
的值为1000
,但事实并非如此。我做错了什么?
P.S。名为the_one_i_want
的XML标记是唯一的,只在我的XML中出现一次。
答案 0 :(得分:3)
问题是命名空间之一。您所追踪的<the_one_i_want>
元素绑定到http://www.example.com/CONFIG
命名空间(您已在XSLT中定义)。
因此,只需更改此内容:
<xsl:variable name="variable_from_xml">
<xsl:value-of select="/config/the_one_i_want/value"/>
</xsl:variable>
到此:
<xsl:variable name="variable_from_xml" select="/CONFIG:config/CONFIG:the_one_i_want"/>
或者更简单:
<xsl:variable name="variable_from_xml" select="/*/CONFIG:the_one_i_want"/>