2012-08-24 44 views
5

Tengo un fragmento de XML para los que tengo que escribir XSDsintaxis XSD de atributos XML con espacio de nombres

<root xmlns="http://xmlns.oracle.com/sca/1.0" xmlns:id="http://xmlns.oracle.com/id/1.0"> 
    <service name="Book" id:number="465"/> 
</root> 

La siguiente XSD da error al generación de la clase JAXB.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/sca/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="service"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string"> 
       <xs:attribute type="xs:string" name="name"/> 
       <xs:attribute ref="ns:number" xmlns:ns="http://xmlns.oracle.com/id/1.0"/> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 

error es

C: \ Archivos de programa \ Java \ jdk1.7.0_06 \ bin> xjc -p ensayo C: \ Book.xsd analizar un esquema ... [ERROR] src -resolve.4.2: Error al resolver el componente 'ns: number'. Se detectó que 'ns: number' está en el espacio de nombres 'http://xmlns.oracle.com/id/1.0', pero el componente s de este espacio de nombres no es referenciable desde el archivo de esquema 'file:/C:/book . xsd '. Si este es el espacio de nombres incorrecto, tal vez el prefijo de 'ns: number' necesite s para cambiarse. Si este es el espacio de nombre correcto, se debe agregar una etiqueta de 'importación' apropiada a 'archivo:/C: /book.xsd'. línea 10 del archivo:/C: /book.xsd

Respuesta

8

En realidad necesita al menos tantos archivos XSD como espacios de nombres, ya que un archivo XSD puede orientar solo a un espacio de nombres, o ninguno.

Dado que su elemento raíz está en un espacio de nombres y el atributo en otro, necesita al menos dos archivos. Los "vincula" a través de un xsd: import.

Top XSD:

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema xmlns="http://xmlns.oracle.com/sca/1.0" xmlns:id="http://xmlns.oracle.com/id/1.0" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import schemaLocation="xsd-syntax-for-xml-attributes-with-namespace1.xsd" namespace="http://xmlns.oracle.com/id/1.0" /> 
    <xsd:element name="root"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="service"> 
      <xsd:complexType> 
      <xsd:attribute name="name" type="xsd:string" use="required" /> 
      <xsd:attribute ref="id:number" use="required" /> 
      </xsd:complexType> 
     </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

xsd-sintaxis-para-XML-atributos-con-namespace1.xsd

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema xmlns="http://xmlns.oracle.com/id/1.0" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/id/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:attribute name="number" type="xsd:unsignedShort" /> 
</xsd:schema> 
0

Uso los siguientes dos esquemas

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/sca/1.0" xmlns:id="http://xmlns.oracle.com/id/1.0" xmlns:sca="http://xmlns.oracle.com/sca/1.0"> 
    <xs:import namespace="http://xmlns.oracle.com/id/1.0" schemaLocation="id.xsd"/> 
    <xs:element name="root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="sca:service"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="service"> 
    <xs:complexType> 
     <xs:attribute name="name" use="required" type="xs:NCName"/> 
     <xs:attribute ref="id:number" use="required"/> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Para ID

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/id/1.0" xmlns:id="http://xmlns.oracle.com/id/1.0" xmlns:sca="http://xmlns.oracle.com/sca/1.0"> 
    <xs:import namespace="http://xmlns.oracle.com/sca/1.0" schemaLocation="Untitled2.xsd"/> 
    <xs:attribute name="number" type="xs:integer"/> 
</xs:schema> 
Cuestiones relacionadas