У меня есть файл xsl с переменными и параметрами. Параметры определяются в другом файле XML:Определение и использование переменных в XSL
<fo:block><xsl:value-of select="root/period"/></fo:block>
и параметр имеет значение:
<root>
<period>1-5</period>
</root>
Теперь, иногда я хочу, чтобы отобразить блок, содержащий период, иногда я не знаю. Как я могу это достичь? Вот как я попробовал:
<xsl:variable name="cond" select="root/cond"/>
<xsl:if test="$cond='1'">
<fo:block><xsl:value-of select="root/period"/></fo:block>
</xsl:if>
параметры:
<root>
<cond>1</cond>
<period>1-5</period>
</root>
Это не работает! Я отобразил значение переменной, используя <xsl:copy-of select="$cond" />
, и он пуст.
UPDATE:
теперь я знаю, в чем проблема:
XSL-FO:
<fo:flow flow-name="xsl-region-body">
<fo:block>
test
</fo:block>
<fo:block>
<xsl:variable name="cond" select=root/cond/>
<xsl:copy-of select="$cond" />
</fo:block>
<fo:block>
<xsl:value-of select="root/period"/>
</fo:block>
</fo:flow>
параметры:
<root>
<cond>haha</cond>
<period>01.01.2013 – 31.12.2013</period>
</root>
выход:
тест 01.01.2013 - 31.12.2013
Так что вопрос действительно: как я могу выбрать значение из параметров XML и присвоить значение переменной XSL?
Показать больше вашей (если не всей) таблицы стилей XSLT. В противном случае все ставки выходят за пределы, где вы поступили не так. –
«Вывод», который вы показали в конце вопроса, кажется окончательным результатом после запуска процессора FO. Вы можете получить представление о проблеме, просмотрев и показывая нам разметку FO, созданную вашей таблицей стилей XSLT, прежде чем эта обработка будет обработана. – LarsH