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>
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>
