Пример анкеты
В листинге 7.2 показаны введение и первый вопрос анкеты, которую вы могли бы использовать для определения, какие товары добавить в ваш каталог.
ПРИМЕЧАНИЕ
Полная версия анкеты имеется на прилагаемом к книге компакт-диске. Тип первого вопроса (атрибут type) определен как QMC (Question Multiple Choice — вопрос, допускающий выбор одного ответа из списка); это вопрос, в качестве ответа на который пользователь должен выбрать один из предложенных вариантов.
Листинг 7.2. Начало документа XML, определяющего анкету (customsurvey.xml)
<?xml version="1.0" standalone="yes" ?> <Questionnaire title="Example Customer Survey" author="wbb" date="May 30, 2000" method="xml" file="e:\scripts\questionnaire\surveyresult.xml" > <Intro><![CDATA[ <h1>Welcome Customers</h1><br> <p>We here at <i>BuyStuff.com</i> want to meet your every desire to buy <b>STUFF</b>. To that end we are greatly expanding our on-line catalog and we want to concentrate on <b>STUFF</b> you will want to buy as soon as you see it. Please help by completing this simple survey. </p>]]> </Intro> <Block name="intro" type="terminal" > <Ques id="intro:1" type="QMC" > <Qtext>Which of the following are you most interested in buying on-line? </Qtext> <Qopt val="a" branch="books" >Books</Qopt> <Qopt val="b" branch="cds" >Cds</Qopt> <Qopt val="c" branch="gadgets">Electronic goodies</Qopt> <Qopt val="d" >I am not interested in buying Stuff!</Qopt> </Ques> <!-- this terminates the block and the questionnaire - could substitute different file for recording --> <Terminal><![CDATA[<h2>Thanks for looking anyway!</h2> ]]> </Terminal> </Block>
Элементы Qopt в первом вопросе со значениями атрибута val, равными a, b и с, служат ответвлениями к другим блокам, в то время как вариант ответа d приводит к отображению завершающего сообщения. Можно выбрать только один из предложенных ответов, потому что тип вопроса указан как QMC. В этой главе мы используем вопросы только двух типов: QMC (Question Multiple Choice — вопрос, допускающий выбор одного ответа из списка) и QMCM (Question Multiple Choice Multiple Answer — вопрос, допускающий выбор нескольких ответов из списка). Результаты ответа пользователя на этот вопрос записываются с помощью атрибута id вопроса и значений атрибутов val элементов Qopt.
В листинге 7.3 показан блок (из листинга 7.2), на который указывает атрибут branch тега Qopt, причем в последнем атрибут val имеет значение а. Вопрос с идентификатором books:! относится к типу QMCM, то есть позволяет выбрать несколько вариантов ответа. Блоки cds и gadgets устроены похожим образом.
Листинг 7.3. Блок вопросов «Книги» (custom.ersurvey.xml)
<Block name="books" type="terminal" > <Ques id="books:1" type="QMCM" > <Qtext>Please select all of the book categories you would like to see in our catalog. </Qtext> <Qopt val="0">Best Sellers of all types</Qopt> <Qopt val="1">Science Fiction</Qopt> <Qopt val="2">Fantasy Fiction</Qopt> <Qopt val="3">History and Biography</Qopt> <Qopt val="4">Computer Technology</Qopt> <Qopt val="5">Business Related</Qopt> </Ques> <Terminal><![CDATA[<h2>Thanks for answering the survey! </h2>]]> </Terminal> </Block>