Параметры командной строки xsltproc с использованием stringparam - PullRequest
17 голосов
/ 30 октября 2008

Я пытаюсь составить таблицу стилей, которая, учитывая ввод 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

Проблема, с которой я сталкиваюсь, заключается в том, что значение параметра target не установлено. По крайней мере, имя, которое приходит из сообщения, кажется пустой строкой, и проверка для xsl: if всегда завершается неудачей. Я уверен, что это из-за какой-то опрометчивой ошибки с моей стороны, но я еще не осознал это. Кто-нибудь знает, что я сделал не так?

Ответы [ 2 ]

24 голосов
/ 30 октября 2008

Если я правильно понял вопрос, я думаю, что вам нужно использовать 'stringparam' в качестве опции для вызова xsltproc, предполагая, что вы передаете соответствующее строковое значение, а не выражение XPath.

xsltproc --stringparam target cora_cmd gen-commands.xsl commands.xml
8 голосов
/ 03 ноября 2008

В объявлении параметра 'target' в таблице стилей вы должны указать значение @select, если хотите, чтобы оно функционировало как значение по умолчанию, когда параметр не используется в командной строке:

<xsl:param name="target" select="'cora_cmd'"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...