2017-12-21 27 views
1

내 xml 파일에 대해 일부 xsd 체계를 정의하려고합니다.cvc-complex-type.2.4.a : 하위 요소 및 속성이있는 복합 유형

XML 구조는

<?xml version="1.0" encoding="UTF-8"?> 
<product name="abc" xmlns="http://example.org/productMetadata.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://example.org/productMetadata.xsd productMetadata.xsd"> 
    <metainf /> 
</product> 

(루트 일부 정의 속성 "이름"을 태그와 예 "metainf"에서와 같이 일부 중첩 태그)를 XSD의 모습을 정의

내 접근 방식과 같은 like

그럼에도 불구하고 xsd에 대해 xml의 유효성을 검사 할 수 없습니다.

유효성 검사기 (java, web-app 및 Eclipse 사용)에 따라 다음 오류 메시지가 표시됩니다.

'metainf'요소로 시작하는 잘못된 콘텐츠가 발견되었습니다. '{metainf}'중 하나가 예상됩니다.

또는

CVC-복잡한 type.2.4.a : 요소 'metainf'으로 시작 잘못된 내용을 발견되었다. '{metainf}'중 하나가 예상됩니다. '5', '13'열.

누구나 내 xsd 또는 xml에 어떤 문제가 있습니까?

답변

2

그냥 지금처럼 xsd:schema 선언에 elementFormDefault="qualified"을 추가

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd"> 

elementFormDefault 속성의 문서에 따라 경찰 :

양식을이 스키마의 대상 네임 스페이스에 선언 된 요소. 값은 "규정 된"또는 "규정되지 않은"이어야합니다. 기본값은 "규정되지 않음"입니다.

  • 는 "비정규"대상 네임 스페이스의 요소가 네임 스페이스 접두어으로 규정 할 필요가없는 것을 나타낸다.
  • "qualified"은 대상 네임 스페이스의 요소가 네임 스페이스 접두사로 정규화되어야 함을 나타냅니다.
+0

이미 존재하지만 중복 된 질문에 대한 포괄적 인 답변이 있습니다. – kjhughes