1

deviceprofile.xsd、relatedType.xsd、および profilelist.xsd の 3 つの XSD があります。

deviceprofile.xsd は、次に profilelist.xsd を参照する relatedtype.xsd を参照するルート XSD です。

relatedtype.xsd と profilelist.xsd の間の参照は正常に機能しますが、deviceprofile.xsd と relatedType.xsd の間の関係が問題を引き起こしています。

関連する名前空間で XSD をインポートしましたが、deviceprofile.xsd を JAXB で解析すると、次のようになります。

[ERROR] src-resolve: Cannot resolve the name 'relatedData' to a(n) 'element decl
aration' component.
line 47 of file:/D:/Personal/Java/Trials/src/com/asl/trials/cea/xml/deviceprof
ile.xsd

Failed to parse a schema.

XSD はすべて同じディレクトリにあるため、パスの問題ではないと確信できます。

誰かが私が間違っていることを指摘できますか???

以下に関連する XSD のスニペットを添付しました (念のため)。

deviceprofile.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:schemas-upnp-org:remoteui:uilist-1-0" targetNamespace="urn:schemas-upnp-org:remoteui:uilist-1-0" xmlns:xs="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified" attributeFormDefault="unqualified" id="uilist">
<xs:import namespace="urn:schemas-ce-org:ce-html-server-caps-1-0" schemaLocation="relatedtype.xsd" />
<xs:element name="uilist">
<xs:complexType>
<xs:sequence>
<xs:element ref="relatedData" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
relatedtype.xsd
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns="urn:schemas-ce-org:ce-html-server-caps-1-0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:schemas-ce-org:ce-html-server-caps-1-0"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:include schemaLocation="profilelist.xsd" />
    <xs:element name="relatedData" type="relatedType" />
    <xs:complexType name="relatedType">
        <xs:sequence>
            <xs:element name="keyword" type="xs:string" minOccurs="0"
                maxOccurs="unbounded" />
            <xs:element ref="profilelist" minOccurs="1" maxOccurs="unbounded" />
            <xs:element name="saveStateStorageURL" type="xs:anyURI"
                minOccurs="0" maxOccurs="1" />
            <xs:element name="savedStatesInfo" type="savedStatesInfoType"
                minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="savedStatesInfoType">
        <xs:attribute name="saveTime" type="xs:string" />
        <xs:attribute name="forUser" type="xs:string" use="optional" />
    </xs:complexType>
</xs:schema>
profilelist.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="profilelist" type="profileListType" />
    <xs:complexType name="profileListType">
</xs:complexType>
...
</xs:schema>
4

1 に答える 1

1

スキーマでは、名前空間を宣言してから、対応するプレフィックスを値に含めるdeviceprofile.xsd必要があります。以下では、プレフィックスを使用しました。urn:schemas-ce-org:ce-html-server-caps-1-0reffoo

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:schemas-upnp-org:remoteui:uilist-1-0"
    targetNamespace="urn:schemas-upnp-org:remoteui:uilist-1-0" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:foo="urn:schemas-ce-org:ce-html-server-caps-1-0"
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified" id="uilist">
    <xs:import namespace="urn:schemas-ce-org:ce-html-server-caps-1-0"
        schemaLocation="relatedtype.xsd" />
    <xs:element name="uilist">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="foo:relatedData" minOccurs="1" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
于 2012-08-27T13:49:06.783 に答える