XML:
<root>
<param name="a">valueOfA</param>
<param name="b">valueOfB</param>
<param name="c">valueOfC</param>
</root>
我需要为xml中的每个param节点创建param
。
因此,预期结果:
<xsl:param name="a" select="valueOfA" />
<xsl:param name="b" select="valueOfB" />
<xsl:param name="c" select="valueOfC" />
~编辑:
犯了一个错误,我需要一个实际的xslt参数,以便稍后在代码中使用。固定在上面。
~编辑:
XSLT 1.0要求
~编辑:
主要问题是使xsl:param的名称从xml值变为如下无效:
<xsl:param name="{@name}" />
或变量。
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates select="param"/>
</xsl:copy>
</xsl:template>
<xsl:template match="param">
<param name="{ ./@name }" select="{ string(.) }"></param>
</xsl:template>
从您的编辑中,您似乎正在寻找一种使用一个XSLT创建另一个XSLT的方法。为了在xsl:
命名空间中创建元素,您需要使用<xsl:element>
或使用命名空间别名功能
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xslo="urn:xsl-output" exclude-result-prefixes="xslo">
<xsl:namespace-alias stylesheet-prefix="xslo" result-prefix="xsl" />
<xsl:template match="root">
<xslo:stylesheet version="1.0">
<xsl:apply-templates select="param" />
</xslo:stylesheet>
</xsl:template>
<xsl:template match="param">
<xslo:param name="{@name}" select="{.}" />
</xsl:template>
</xsl:stylesheet>
样式表中前缀为xslo:
的元素在输出文档(它本身就是另一个样式表(中变为xsl:
。