Оригинал:
Ниже приводится краткое введение в создание XForms-форм для FormsPlayer beta. Этот материал не будет расширяться, поскольку вскоре мы опубликуем полное руководство.
XForms-формы создаются для встраивания в другие XML-документы. Обычно XForms-формы встраивают в XHTML-документы. На сегодняшний день броузеры не понимают XHTML должным образом. В частности, XHTML воспринимается лишь как XML-версия HTML (см. XHTML 1.0). Однако XHTML станоится все более модульным, и броузеры начинают иметь дело с элементами из других пространств имен, в в этом случае XForms станет стандартным формообразующим модулем для XHTML.
Поэтому важно иметь это обстоятельство в виу при создании форм. Итак, мы начинаем свои документы с XML-декларации, и в ней декларируем пространства имен для
XHTML и XForms:
<?xml version="1.0" encoding="iso-8859-1"?>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms/cr"
>
FormsPlayer beta работает в Microsoft Internet Explorer 6.
Тэги XForms вставляются в обычный HTML-документ, но при помощи различных пространств имен мы можем указывать IE передавать контроль FormsPlayer'у на XForms-тегах:
<object id="FormsPlayer" classid="CLSID:4D0ABA11-C5F0-4478-991A-375C4B648F58" width="0" height="0">
<b>FormsPlayer has failed to load! Please check your installation.</b>
<br />
<br />
</object>
<?import namespace="xforms" implementation="#FormsPlayer"?>
Скоро мы выпустим код, избавляющий от необходимости этих деклараций, и это позолит вам использовать IE и FormsPlayer для просмотра любых XForms-форм в Интернете. Но сейчас эта декларация необходима во всех XForms-формах для того, чтобы использовать их в FormsPlayer beta.
Заметим важность того, что префикс пространства имен декларируется в процессорной инструкции 'import',
processing instruction matches that used when declaring the XForms namespace on
the HTML element:
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms/cr"
>
...
<?import namespace="xforms" implementation="#FormsPlayer"?>
Также ID бинарного поведения (???) может быть каким угодно, но удостоверьтесь, что атрибут 'implementation' в 'import' PI ссылается на него корректно:
<object id="FormsPlayer" classid="CLSID:4D0ABA11-C5F0-4478-991A-375C4B648F58">
...
<?import namespace="xforms" implementation="#FormsPlayer"?>
Теперь, когда FormsPlayer beta включен в документ, можно использовать элементы XForms согласно спецификации. В продолжение нашего примера добавим модель, содержащую некоторые данные. Это обычно происходит в элементе 'head' XHTML-документа:
<head>
<title>My first form</title>
<xforms:model id="HelloWorld">
<xforms:instance>
<HelloWorld>
<greeting>Hello</greeting>
<who>World</who>
</HelloWorld>
</xforms:instance>
</xforms:model>
</head>
Заметим, что все элементы из набора XForms-тегов используют один и тот же префикс пространства имен - тот же, что использован в начале документа и в 'import' PI. Так мы сообщаем Internet Explorer'у о необходимости передачи контроля FormsPlayer beta при обнаружении XForms-тег.
Теперь мы можем сделать данные редактируемыми, используя лишь пару простых полей редактирования. Для начала сделаем раскрывающийся список для выбора поздравления:
<body>
<xforms:select1 ref="greeting">
<xforms:label style="width:150px;">Change Greeting</xforms:label>
<xforms:hint>Choose the greeting that you would like to use</xforms:hint>
<xforms:item>
<xforms:label>Hello</xforms:label>
<xforms:value>Hello</xforms:value>
</xforms:item>
<xforms:item>
<xforms:label>Goodbye</xforms:label>
<xforms:value>Goodbye</xforms:value>
</xforms:item>
</xforms:select1>
Более подробную информацию об элементе select1 можно найти в спецификации XForms 1.0.
Теперь добавить простое поле для редактирования, чтобы можно был ввести имя:
<xforms:input ref="who">
<xforms:label style="width:150px;">Greet Who?</xforms:label>
<xforms:hint>Please say who you would like to greet</xforms:hint>
</xforms:input>
Более подробную информацию об элементе input можно найти в спецификаии XForms 1.0.
И наконец, добавим два элемента вывода, чтобы показать, как разные элементы управления можно включить в одни и те же данные:
Your greeting is: <b><xforms:output ref="greeting" /> <xforms:output ref="who" />!</b>
</body>
</html>
Более подробная информация об элементе output - в спецификации XForms 1.0.
См. результат. Для просмотра необходимо инсталлировать FormsPlayer.