еще одна викторина для изучения класса, в которой мне нужна помощь, чтобы сравнить возвращаемое значение position () со значением параметра следующим образом, используя XSLT 1.0. У меня есть этот простой XML ниже ...
<Providers>
<Company>
<Name>Alpha</Name>
</Company>
<Company>
<Name>Beta</Name>
</Company>
<Company>
<Name>Omega</Name>
</Company>
</Providers>
И я хочу передать параметр с числовым значением, обозначающим уровень узла, чтобы вставить новый элемент с именем Rating, как этот ...
<Providers>
<Company>
<Name>Alpha</Name>
</Company>
<Company>
<Name>Beta</Name>
<Rating>Good</Rating>
</Company>
<Company>
<Name>Omega</Name>
</Company>
</Providers>
Вот мой XSLT ...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="nodeNumber">2</xsl:param>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Providers">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="Company[ position() = 2 ]">
<xsl:copy>
<xsl:copy-of select="@*|node()"/>
<Rating>Good</Rating>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Вместо жесткого кодирования ко второму узлу ...
<xsl:template match="Company[ position() = 2 ]">
Я хочу сделать такое сравнение, чтобы оно использовало значение параметра ...
<xsl:template match="Company[ position() = $nodeNumber ]">
но я получаю ошибку, если XSLT равен 1,0 ...
c:\ msxsl.exe providers.xml providers.xsl
Error occurred while compiling stylesheet 'providers.xsl'.
Code: 0x80004005
Variables may not be used within this expression.
Company[ position() = -->$nodeNumber <--]
работает нормально, если XSLT равен 2,0 ...
c:\ altovaxml.exe /xslt2 providers.xsl /in providers.xml
<?xml version="1.0" encoding="UTF-8"?>
<Providers>
<Company>
<Name>Verizon</Name>
</Company>
<Company>
<Name>Sprint</Name>
<Rating>Good</Rating>
</Company>
<Company>
<Name>ATT</Name>
</Company>
</Providers>
Мне нужно использовать XSLT 1.0. Большое спасибо за ваше время и усилия ...