我试图组成一个样式表,给定一个XML输入(显然)和一个指定“目标”的参数,该样式表将生成与该目标匹配的命令列表。这是书面的样式表:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:param name="target" select="cora_cmd"/>
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="command/program">
    <xsl:if test="@name=$target">
      <xsl:message terminate="no">found match <xsl:value-of select="$target"/>   </xsl:message>
      <xi:include xmlns:xi="http://www.w3.org/2003/XInclude">
        <xsl:attribute name="href"><xsl:value-of select="../@help"/></xsl:attribute>
      </xi:include>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>


我正在调用xsltproc来执行此样式表,如下所示:

xsltproc --param target cora_cmd gen-commands.xsl commands.xml


我遇到的问题是目标的参数值似乎未设置。至少来自消息的名称似乎是一个空字符串,并且xsl:if的测试始终失败。我敢肯定这是我的一些头疼的错误,但是我还没有意识到。有人知道我做错了吗?

最佳答案

如果我正确理解了这个问题,我认为您需要使用'stringparam'作为调用xsltproc的选项,假设您传递的是匹配的字符串值,而不是XPath表达式。

xsltproc --stringparam target cora_cmd gen-commands.xsl commands.xml

关于xslt - 使用stringparam的xsltproc命令行参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/250197/

10-10 03:52