1

我有无错误的 xsd。下面是我的xsd。我只是指主要元素。Jaxb 转换的类在 @XmlRootElement(name = "principal") 上给出错误:“无法在此上下文中使用命名空间 '' 和名称 'principal' 解析 XML 元素声明”。有人可以帮忙吗?

这是我的xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="authorization"><xs:complexType>           <xs:sequence><xs:element name="group" maxOccurs="unbounded" minOccurs="1"><xs:complexType><xs:sequence><xs:element ref="principal" maxOccurs="unbounded" minOccurs="1" /></xs:sequence>
<xs:attribute name="name" type="xs:string"></xs:attribute>
</xs:complexType></xs:element>  <xs:element name="principal" ><xs:complexType><xs:simpleContent><xs:extension base="xs:string"><xs:attribute type="xs:string" name="family" use="optional"/><xs:attribute name="type" type="xs:string"  use="optional"/>
</xs:extension></xs:simpleContent></xs:complexType></xs:element>
</xs:schema>
4

1 回答 1

0

首先,您的架构是错误的。我想你试着把这样的东西:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="authorization">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="group" maxOccurs="unbounded" minOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="principal" maxOccurs="unbounded"
                                minOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string"></xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="principal">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute type="xs:string" name="family" use="optional" />
                                <xs:attribute name="type" type="xs:string" use="optional" />
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

有了这个 XSD,我也遇到了同样的问题。如果您更改为其他 XSD,问题将得到解决

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="authorization">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="group" maxOccurs="unbounded" minOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="principal" maxOccurs="unbounded"
                                minOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string"></xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="principal">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="family" use="optional" />
                    <xs:attribute name="type" type="xs:string" use="optional" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
</xs:schema>

问候

亚历克斯。

于 2013-08-01T10:56:39.190 回答