XSLT- 在模板中使用全局变量
XSLT- using global variable in template
我确定一定有明显的地方我做错了。 (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 的值。我误会了什么?
您的参数未填充。您在任何模板之外定义它,因此在任何现有上下文之外。没有进一步的上下文,路径 POSIT
什么都不选择。你应该使用类似的东西:
<xsl:param name="outObject" select="/root/path/to/POSIT"/>
这是假设 POSIT
是您的 XML 输入中的一个元素,您想要获取其值 - 而不是 string "POSIT"
需要引用:
<xsl:param name="outObject" select="`POSIT`"/>
也许你犯了和我一样的错误总是。
如果要使用字符串"POSIT",则必须使用单引号:
<xsl:param name="outObject" select="'POSIT'"/>
我确定一定有明显的地方我做错了。 (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 的值。我误会了什么?
您的参数未填充。您在任何模板之外定义它,因此在任何现有上下文之外。没有进一步的上下文,路径 POSIT
什么都不选择。你应该使用类似的东西:
<xsl:param name="outObject" select="/root/path/to/POSIT"/>
这是假设 POSIT
是您的 XML 输入中的一个元素,您想要获取其值 - 而不是 string "POSIT"
需要引用:
<xsl:param name="outObject" select="`POSIT`"/>
也许你犯了和我一样的错误总是。
如果要使用字符串"POSIT",则必须使用单引号:
<xsl:param name="outObject" select="'POSIT'"/>