Я уверен, что это еще один вопрос XSLT с довольно простым решением, но, опять же, я не видел какой-либо полезной темы в сети на тему, которую мне удалось использовать. У меня есть форма XSLT, содержащая набор полей выбора, которые мне нужно установить, чтобы показывать данные, содержащиеся в XML, из нашей базы данных при отправке запроса. В настоящее время я использую небольшие примеры кода для тестирования XML и XSL. Тест XML выглядит следующим образом
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>
<root>
<radiobuttons>
<radio1>Y</radio1>
<blurb>blahblahblah</blurb>
<hidden>N</hidden>
<check1>Y</check1>
<select1>3</select1>
</radiobuttons>
</root>
Ниже приведен XSLT, который я использую с этим XML. Я установил оба флажка и переключатели, чтобы проверить себя в зависимости от данных в XML с помощью команд xsl: if. Тест скрытого div также отображает зависимость от данных XML, используя тот же xsl: if. Поле ввода просто отображает данные XML, на которые оно нацелено.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="no"
encoding="UTF-8"/>
<xsl:template match="/">
<HTML>
<BODY>
<form>
<xsl:apply-templates select="root"/>
</form>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="root">
<input type="radio" name="radio1" value="Y" >
<xsl:if test="radiobuttons/radio1='Y'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 1
<input type="radio" name="radio1" value="N" >
<xsl:if test="radiobuttons/radio1='N'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 2
<div> <xsl:if test="radiobuttons/hidden='N'">
<xsl:attribute name="style">display:none</xsl:attribute></xsl:if> Yaddah Yaddah Yaddah
</div>
<input type="checkbox" name="check1" value="Y">
<xsl:if test="radiobuttons/check1='Y'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Checkbox test
<label for="select1">select1:</label>
<select id="select1" ><xsl:value-of select="radiobuttons/select1"></xsl:value-of>
<option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option>
</select>
<br></br>
<br/>
<input name="blurb" type="text" id="blurb" value="{./radiobuttons/blurb}"></input>
</xsl:template>
</xsl:stylesheet>
Однако я не думаю, что смогу правильно сделать функцию выбора поля, используя xsl: if, потому что это Boolean. Я думаю, что я мог бы написать команду xsl: if для каждой опции, которая привела бы к желаемому результату, однако это похоже на очень сложный метод выполнения этой работы, и я уверен, что для этого должно быть гораздо более элегантное решение. У меня также не было никакого успеха, заставляющего это работать, используя метод значения для поля ввода.
Из приведенных выше примеров кодов я бы хотел, чтобы поле выбора показывало 3-й вариант, как отмечено в XML. Может кто-нибудь предложить, или даже лучше дать мне пример того, как я мог бы кодировать поле выбора в мой XSLT, который будет вести себя так, как описано выше? Любая помощь будет принята с благодарностью!