xslt 中的输入参数

ana*_*and 4 xml xslt input

如何将输入参数传递给 XSLT 样式表?我正在使用 xsltproc,我想--stringparam <param> <value>用作参数,但我不知道如何访问 XSLT 中的参数。有人可以举个例子吗?提前致谢。

Phi*_*ilW 5

这是我正在使用的一个。默认值部分是可选的。你必须有一个

  <xsl:param name="yourParamname"/>
Run Code Online (Sandbox Code Playgroud)

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <!-- default value -->
<xsl:variable name="defaultDeploymentMode">
    <xsl:text>test</xsl:text>
</xsl:variable>
<xsl:param name="deploymentMode" select="$defaultDeploymentMode"></xsl:param>



<xsl:template match="/">
    <data><xsl:value-of select="$deploymentMode"/>
           </data>
     </xsl:template>
Run Code Online (Sandbox Code Playgroud)


Dim*_*hev 5

如何为 xslt 文件提供输入参数?

在 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>
Run Code Online (Sandbox Code Playgroud)

这里,全局参数命名pDeletePosnum必须删除的元素的位置。

还有一个default value(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>
Run Code Online (Sandbox Code Playgroud)

如果 的值在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>
Run Code Online (Sandbox Code Playgroud)

至于在外部设置参数,这是在 C# 中启动 XslCompiledTransform XSLT 处理器时如何完成的:

http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx