XSLT-在模板中使用全局变量

时间:2015-04-16 11:14:25

标签: xslt global-variables param

我确信必定有一些明显我做错了。 (Altova XMLSpy 2012专业sp1)

我已声明并想要使用全局变量:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="xs fn">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" doctype-system="myDTD.dtd" />

    <!-- Edit these parameters if necessary. -->
    <xsl:param name="outObject" select="POSIT"/>

    <xsl:template match="section">
        <xsl:element name="section">
                <!-- debug -->
            <xsl:element name="para">Debug: outObject = <xsl:value-of select="$outObject"/></xsl:element>
        </xsl:element>
    </xsl:template>


</xsl:stylesheet>

这会产生此输出:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE section SYSTEM "myDTD.dtd">
<section>
    <title/>
    <para>Debug: outObject = </para>
</section>

我原以为我可以在这里访问$ outObject的值。我误解了什么?

2 个答案:

答案 0 :(得分:1)

您的参数未填充。您在任何模板之外定义它,因此在任何现有上下文之外。没有进一步的上下文,路径POSIT不会选择任何内容。你应该使用类似的东西:

<xsl:param name="outObject" select="/root/path/to/POSIT"/>

这假设POSIT是XML输入中的一个元素,您想要获取其值 - 而不是需要引用的字符串 "POSIT"

<xsl:param name="outObject" select="`POSIT`"/>

答案 1 :(得分:1)

也许你犯的错误与我总是一样。

如果你想使用字符串&#34; POSIT&#34;,你必须使用单引号:

<xsl:param name="outObject" select="'POSIT'"/>
相关问题