2

我在 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,但事实并非如此。我究竟做错了什么?

PS命名的 XML 标记the_one_i_want是唯一的,在我的 XML 中只出现一次。

4

1 回答 1

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"/>
于 2012-12-12T14:48:17.877 回答