Листинг 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 устроены похожим образом.