Как указать текст или метку только для чтения в схеме данных XML - PullRequest
2 голосов
/ 16 июня 2010

Я имею в виду схему данных XML, как подробно описано здесь: http://www.w3schools.com/schema/default.asp.

Когда я получаю данные из базы данных и отправляю их клиенту, появляются текстовые поля, которые я хочу сохранить в качестве недоступных для редактирования отображения /поля только для чтения.

Например, гипотетически в следующей последовательности:

<xsd:element ....
<xsd:element name="employeeName" xsd:type="xsd:string"/>
<xsd:element name="projID" xsd:type="xsd:string" readOnly='true'>
<xsd:element name="hireDate" type="xsd:date"/>
<xsd:element ....
<xsd:element name="today" type="xsd:date" readOnly='true'/>
<xsd:element ....

Где дисплей клиента будет интерпретировать поток xsd и создать форму ввода.Конечно, метка является тегом искусственной схемы, чтобы проиллюстрировать мою потребность в размещении поля только для чтения в середине формы.

В приведенном выше примере projID и сегодня должны быть представлены пользователю как читаемыетолько поля, но такой синтаксис схемы, как readOnly, отсутствует.

Один из способов, которым я знаю, как этого добиться, - разбить поток на два сегмента сложного типа и разделить его на две входные формы и заставить клиентапредставьте промежуточную метку между двумя формами.

Однако, это проблематично, потому что

  1. У меня довольно много информационных полей только для чтения, которые должны быть представлены через пользовательский интерфейс.Было бы слишком много прерываний для гладкой единственной формы.Лучше всего иметь только одну форму ввода.
  2. Некоторые поля только для чтения представлены в середине последовательности сущностей.Это означает прерывание потока данных базы данных в jdo (или jpa) -клиент для этой сущности.

Следовательно, как указать элемент поля только для чтения в XML-схеме?

... и ( смущенно ) можно спросить, как указать скрытое поле?

1 Ответ

2 голосов
/ 17 июня 2010

Вы можете использовать аннотации схемы XML , чтобы предоставить такую ​​информацию для вашего приложения. Это неловко, но это может сработать. Что-то вроде:

<xs:element name="heading" type="xs:string">
    <xs:annotation>
        <xs:appinfo>
            <readOnly>true</readOnly>
        </xs:appinfo>
    </xs:annotation>
 </xs:element>
...