В этой теме был ответ на мой вопрос, но предложенное решение Flynn1179 было не совсем правильным для меня (YMMV).Так что попробуйте, как это предлагают люди, более опытные, чем я, но если это не сработает для вас, подумайте, как я это решил.Я использую xsltproc, который обрабатывает только XSL версии 1.0.
Мне нужно было соответствовать <leadTime hour="0024">
, но используйте параметр: <xsl:param name="hour">0024</xsl:param>
.Я обнаружил, что: <xsl:if test="@hour='{$hour}'">
не работает, несмотря на заявления здесь и в других местах, что это обязательный синтаксис для XSL v.1.0.Вместо этого более простой <xsl:if test="@hour=$hour">
выполнил свою работу.
Еще один момент: Dimitre предлагает выше поместить шаблон внутри оператора if.xsltproc пожаловался на это: вместо этого я поместил оператор if внутри шаблона:
<xsl:template match="leadTime">
<xsl:if test="@hour=$leadhour">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:if>
</xsl:template>