Image

Castor carriage return

Для работы с xml использую библиотечку Castor. Структура xml описывается в xsd. Такая проблема: как описать элемент в xsd, чтобы в нём можно было хранить произвольный текст? Пробовал xs:string, но Castor почему-то игнорирует перевод строки, CDATA тоже не помогает.

Update:

Нашёл одно из решений, нужно использовать атрибут xml:space:

1) в xsd добавляется такая строчка:
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>

2) элемент описывается приблизительно так:
<xs:element name="registry" minOccurs="0">
 <xs:complexType>
  <xs:simpleContent>
   <xs:extension base="xs:string">
    <xs:attribute ref="xml:space"/>
   </xs:extension>
  </xs:simpleContent>
 </xs:complexType>
</xs:element>

3) когда пишем xml, делаем

registry.setSpace("preserve");

4) в результате xml выглядит приблизительно так:
<registry xml:space="preserve">some text with carriage return</registry>