xml - xslt中的输入参数

标签 xml xslt input

如何将输入参数传递给 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/

相关文章:

C#:读取 XML 属性

c# - 如何使用字符串中的 XML 标记?

java - spring配置文件中的动态依赖注入(inject)

xml - 防止 XSL 1.0 中的 2^n - 1 条件

xml - cdata-section-elements - 对于不同 XPath 中的相同元素不能被忽略

python - 使用读取的新值更新列表值 - Python

Numberpad 的 Android 模拟器键盘输入不再有效

xml - 在 AWS DynamoDB 中存储 XML 文档

xml - 阻止图像权利并在其周围流动文本?

javascript - 如何从输入创建数组?