xml – 打印XSL变量的值

有人可以告诉我如何在XSL转换中打印出一个变量?似乎是一件容易的事情,但我似乎不能这样做.这是我的代码:
<?xml version='1.0' encoding='UTF-8' ?>
<xsl:stylesheet version="1.0"
  xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template name="ControlledListStructure">
    <xsl:param name="xmlElem" />
    <xsl:param name="dataName" />

    <xsl:element name="{$xmlElem}">
      1: <xsl:text>{$xmlElem}</xsl:text>.
      2: {$xmlElem}.
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

如果我使用xmlElem的值为“Wibble”(一个字符串而不是一个节点)调用此模板,我将得到以下输出:

<Wibble>
      1: {$xmlElem}.
      2: {$xmlElem}.
</Wibble>

所以我的参数是正确的,我只是无法正确访问.有人可以告诉我如何让$xmlElem正确打印,以便我看到:

<Wibble>
      1: Wibble.
      2: Wibble.
</Wibble>

感谢任何投入.

所有答案都缺少重要内容:进一步阅读:

Can someone please tell me how to
print out a variable in my XSL
transform? Seems like an easy enough
thing to do but I just can’t seem to
do it.

在XSLT 1.0中,根据它是否包含标量值(字符串,数字或布尔值)还是具有结构化值 – 一个节点集(从xml的一个或多个节点),可以生成一个<xsl:variable>的内容的两种主要方法文件):

> <xsl:value-of select="$yourscalarVariableName"/>使用它来产生标量值.实际生成一个包含这个标量值的文本节点.
> <xsl:copy-of select="$yourStructuredVariableName"/>使用它来生成包含在变量中的所有节点的副本.

非常重要的是要知道,如果xsl:变量包含一个节点列表,< xsl:value-of ...>使用指令,只会产生第一个节点的字符串值.这是一个经常提交的错误和常见问题.

有第三种方法:如果< xsl:variable>应用于生成属性:

<someLiteralResultElement someAttribute="{$theVariable}"/>

评估大括号(称为AVT — attribute-value-template)中的XPath表达式,并将结果放入属性值.

在XSLT 2.0中,< xsl:value-of ... />指令,当运行不兼容模式时,会生成一个文本节点列表,一个用于xsl:变量中包含的每个节点.当以兼容性模式运行(具有指定的属性version =“1.0”)时,< xsl:value-of>指令的行为方式与XSLT 1.0中的相同.

在Xslt 2.0< xsl:copy-of>行为方式与XSLT 1.0相同.然而,建议使用新的<xsl:sequence>指令,因为前者会产生每个节点的新副本,而< xsl:sequence>不产生节点的新副本.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念