У меня есть сторонняя схема XSD, которая, помимо элементов из собственного пространства имен, позволяет включать отформатированные фрагменты текста в XHTML.Скажем (урезанный образец):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="http://www.example.org/myns"
xmlns:myns="http://www.example.org/myns"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:element name="body">
<xsd:complexType >
<xsd:sequence>
<xsd:element name="expression" type="xsd:string" />
<xsd:element name="documentation" type="myns:formattedText" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="formattedText">
<xsd:sequence>
<xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Я сгенерировал свои Java-предложения, используя JAXB (Sun) (xfc myschema.xsd
), и исключения unmarshalling работает для узла formattedText, его метод getAny()
возвращает ноль.
Меня совсем не интересует получение xhtml DOM на Java, я просто хочу необработанный текст (CDATA).Я предполагаю, что, если бы мне было позволено изменить схему, заменив приведенную выше строку:
<xsd:element name="documentation" type="xsd:string" />
было бы достаточно, но я бы предпочел другой способ, если это возможно.Я очень мало знаю о JAXB.Любые советы?
Обновление: я обновил образец схемы, чтобы его можно было дословно проверить.Я хотел бы, чтобы для этой схемы и для следующего примера XML
<?xml version="1.0" encoding="UTF-8"?>
<body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/myns"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xsi:schemaLocation="http://www.example.org/myns">
<expression>hi</expression>
<documentation>
Hello <b>world</b>
</documentation>
</body>
был получен класс Body, который возвращает в своем методе body.getDocumentation (). GetAny () необработанную строку Hello <b>world</b>