users@jaxb.java.net

When does a jaxb object implement the hava.xmk.bind.Element interface?

From: <JMedina_at_on.com>
Date: Thu, 7 Aug 2003 13:24:27 +0200

Given the schema and document below, why the following code returns false ?

            PackageElement pkg = (PackageElement) unmarshaller.unmarshal(
new File("sample.xml"));
           bIsElement = (pkg.getComment() instanceof javax.xml.bind.Element
); // <----------------- returns false. Why ?
           bIsElement = (pkg.getClasses() instanceof javax.xml.bind.Element
); // <----------------- returns false. Why ?



* * * Schema:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.on.com/xml/schemas"
            xmlns="http://www.on.com/xml/schemas"
            elementFormDefault="unqualified"
            attributeFormDefault="unqualified">

  <xsd:element name="package" type="PackageType"/>

  <xsd:element name="comment" type="TextType"/>

 <xsd:complexType name="PackageType">
    <!-- Sequenced entities -->
    <xsd:all>
      <xsd:element ref="comment" minOccurs="0"/>
      <xsd:element ref="classes" minOccurs="0"/>
      <!-- some other elements removed -->
    </xsd:all>
  </xsd:complexType>

<xsd:complexType name="TextType">
    <xsd:complexContent mixed="true">
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:any processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>

<xsd:element name="classes" type="ClassesType">
     <xsd:unique name="ClassKey">
            <xsd:selector xpath=".//class"/>
            <xsd:field xpath="@name"/>
     </xsd:unique>
  </xsd:element>

  <xsd:element name="class">
    <xsd:complexType>
      <xsd:attribute name="name" type="xsd:string" use="required"/>
      <xsd:attribute name="description" type="xsd:string" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="ClassesType">
    <xsd:sequence>
        <xsd:element ref="class" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>


<xsd:schema>


* * * Sample document (sample.xml)

<?xml version="1.0" encoding="UTF-8"?>
<ontech:package xmlns:ontech="http://www.on.com/xml/schemas"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <ontech:comment>
        Installs application Sample.
        You will require Application Ver 2.4 CD to populate the depot and
make this
        package usable.
    </ontech:comment>

    <ontech:classes>
            <ontech:class name="test"/>
            <ontech:class name="sample" description="A class description
goes here."/>
    </ontech:classes>

</ontech:package>