有人可以告诉我如何在我的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>
Run Code Online (Sandbox Code Playgroud)
如果我使用"Wibble"(字符串 - 而不是节点)的xmlElem值调用此模板,我将得到以下输出:
<Wibble>
1: {$xmlElem}.
2: {$xmlElem}.
</Wibble>
Run Code Online (Sandbox Code Playgroud)
所以我的参数正常,我无法正常访问它.有人能告诉我如何正确打印$ xmlElem以便我看到:
<Wibble>
1: Wibble.
2: Wibble.
</Wibble>
Run Code Online (Sandbox Code Playgroud)
感谢您的任何意见.
Dim*_*hev 32
所有答案都缺少一些重要内容:进一步阅读:
有人可以告诉我如何在我的XSL转换中打印出变量吗?看起来似乎很容易做,但我似乎无法做到.
在XSLT 1.0中,有两种主要的方法来生成a的内容<xsl:variable>,具体取决于它是否包含标量值(字符串,数字或布尔值),或者是否具有结构化值 - 节点集(来自xml文档的一个或多个节点) (s)):
<xsl:value-of select="$yourscalarVariableName"/> 使用它来产生标量值.实际上会生成一个包含此标量值的文本节点.
<xsl:copy-of select="$yourStructuredVariableName"/> 使用此选项可生成变量中包含的所有节点的副本.
非常重要的是要知道如果xsl:variable包含节点列表并且使用该<xsl:value-of ...>指令,则仅产生第一个节点的字符串值.这是一个经常犯的错误和FAQ.
还有第三种方法:如果<xsl:variable>应该用于生成属性:
<someLiteralResultElement someAttribute="{$theVariable}"/>
Run Code Online (Sandbox Code Playgroud)
计算花括号中的XPath表达式(称为AVT - attribute-value-template),并将结果放入属性值中.
在XSLT 2.0中,该<xsl:value-of .../>指令在不以兼容模式运行时会生成一个文本节点列表 - 每个节点包含一个文本节点xsl:variable.在兼容模式下运行(version="1.0"指定了属性)时,该<xsl:value-of>指令的行为方式与XSLT 1.0中的相同.
在Xslt 2.0中, <xsl:copy-of>行为与XSLT 1.0中的行为相同.但是,建议使用新<xsl:sequence>指令,因为前者生成每个节点的新副本,<xsl:sequence>而不生成新的节点副本.
| 归档时间: |
|
| 查看次数: |
39986 次 |
| 最近记录: |