如何将输入参数传递给 XSLT 样式表?我正在使用 xsltproc,我想使用 --stringparam <param> <value>
作为参数,但我不知道如何访问 XSLT 中的参数。有人可以举个例子吗?提前致谢。
最佳答案
How to give input parameter to an xslt file?
在 XSLT 中任何 全局 参数(xsl:param
是XSLT 样式表)可以由转换的发起者在外部指定其值。
这种外部参数设置的完成方式取决于实现,并且因 XSLT 处理器而异——请阅读您正在使用的特定 XSLT 处理器的文档。
这是一个小例子:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pDeletePos" select="3"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="num">
<xsl:if test="not(position() = $pDeletePos)">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
这里,名为pDeletePos
的全局参数是必须删除的num
元素的位置。
还有一个默认值
(3),为此参数指定。如果转换的发起者未指定 pDeletePos
参数,则将使用此值。
当上述转换应用于此 XML 文档时:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
如果 pDeletePos
的值在外部指定为 5
,则转换会产生以下结果:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
至于在外部设置参数,这是在启动 XslCompiledTransform XSLT 处理器时如何在 C# 中完成的:
http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx
关于xml - xslt中的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475131/