Схема XML: не удается разрешить определение типа имени - PullRequest
0 голосов
/ 27 декабря 2018

Я определяю схему, но при проверке ее в затмении выдает следующую ошибку:

[Ошибка]: 1125: 55: src-resol: не удается разрешить имя 'YesNoDoesNotApplyType'для (n) компонента 'определения типа'.

Моя схема выглядит следующим образом:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="9.00" id="R2014.1">
<xs:include schemaLocation="ATA_CommonTypes.xsd"/>

<xs:element name="ABT" type="YesNoDoesNotApplyType">
    <xs:annotation>
        <xs:documentation>Aborted Approach Indicator</xs:documentation>
    </xs:annotation>
</xs:element>

</xs:schema>

и ATA_CommonTypes.xsd выглядит следующим образом:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.00" id="R2007.1">

<xs:simpleType name="YesNoDoesNotApplyType">
    <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="1"/>
        <xs:enumeration value="D">
            <xs:annotation>
                <xs:documentation>Does Not Apply</xs:documentation>
            </xs:annotation>
        </xs:enumeration>
        <xs:enumeration value="N">
            <xs:annotation>
                <xs:documentation>No</xs:documentation>
            </xs:annotation>
        </xs:enumeration>
        <xs:enumeration value="Y">
            <xs:annotation>
                <xs:documentation>Yes</xs:documentation>
            </xs:annotation>
        </xs:enumeration>
    </xs:restriction>
</xs:simpleType>
</xs:schema>

Моя функция затмения выглядит следующим образом: и выдает ошибку из приведенной ниже строки. XSModel model = schemaLoader.load (input);

private SchemaAlertFormatterUtil(String schemaUriBase) {
  try {
     InputStream schemaInputStream =
           this.getClass().getClassLoader().getResourceAsStream( schemaUriBase + CSDD_MM_XSD );
     DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
     XSImplementation xsImplementation =
           ( XSImplementation ) registry.getDOMImplementation( "XS-Loader" );

     XSLoader schemaLoader = xsImplementation.createXSLoader( null );
     LSInput input = new DOMInputImpl();
     input.setByteStream( schemaInputStream );
     XSModel model = schemaLoader.load( input );

     annotationBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
     // Read and add all element declarations
     XSNamedMap elements = model.getComponents( XSConstants.ELEMENT_DECLARATION );
     for ( int i = 0; i < elements.getLength(); i++ ) {
        XSElementDeclaration item = ( XSElementDeclaration ) elements.item( i );
        addItemToMapper( item.getName(), item.getAnnotation() );
     }

     // Read and add all attribute declarations
     XSNamedMap attributes = model.getComponents( XSConstants.ATTRIBUTE_DECLARATION );
     for ( int i = 0; i < attributes.getLength(); i++ ) {
        XSAttributeDeclaration item = ( XSAttributeDeclaration ) attributes.item( i );
        addItemToMapper( item.getName(), item.getAnnotation() );
     }
  } catch ( Exception exception ) {
     LOGGER.error( "Error occured when loading CSDD_MM.xsd", exception );
  }}

1 Ответ

0 голосов
/ 27 декабря 2018

Объяснение заключается в том, что вы не показали нам, и самое важное, что вы не показали нам, - это целевое пространство имен документа схемы.Если документ схемы имеет целевое пространство имен, тогда тип будет в этом пространстве имен, а ссылка на тип должна быть уточнена с соответствующим префиксом.

...