2012-08-16 3 views
3

XSD 유효성 검사기에 코드를 입력 할 때이 오류가 발생하는 XSD에 문제가 있습니다. "no-xmlns : 속성 선언의 {name}이 (가) 'xmlns와 일치하지 않아야합니다. '. " 나는 스키마의 코드의 두 번째 라인을 함께 할 수있는 뭔가입니다 가정입니다XMLNS 속성 선언

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Test"> 
     <xs:complexType> 
      <xs:attribute name="xmlns" type="xs:string" use="required"/> 
      <xs:sequence> 
       <xs:choice minOccurs="1" maxOccurs="unbounded"> 
        <xs:element name="Screens" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:sequence> 
           <xs:element name="Screen" minOccurs="1" maxOccurs="unbounded"> 
            <xs:complexType> 
             <xs:attribute name="name" type="xs:string" use="required"/> 
             <xs:attribute name="package" type="xs:string" use="required"/> 
             <xs:attribute name="class" type="xs:string" use="required"/> 
             <xs:sequence> 
              <xs:element name="ScreenData" minOccurs="1" maxOccurs="unbounded"> 
               <xs:complexType> 
                <xs:attribute name="step" type="xs:int" use="required"/> 
                <xs:attribute name="description" type="xs:string" use="required"/> 
                <xs:sequence> 
                 <xs:element name="element" minOccurs="1" maxOccurs="unbounded"> 
                  <xs:complexType> 
                   <xs:attribute name="name" type="xs:string" use="required"/> 
                   <xs:attribute name="type" type="xs:string" use="required"/> 
                   <xs:attribute name="value" type="xs:string" use="required"/> 
                  </xs:complexType> 
                 </xs:element> 
                </xs:sequence> 
               </xs:complexType> 
              </xs:element> 
             </xs:sequence> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
        <xs:element name="DBSession" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:attribute name="use_test.properties" type="xs:boolean" use="required"/> 
          <xs:attribute name="use_dbserver" type="xs:string" use="required"/> 
          <xs:attribute name="use_db" type="xs:string" use="required"/> 
          <xs:sequence> 
           <xs:element name="login" minOccurs="1" maxOccurs="1"> 
            <xs:complexType> 
             <xs:attribute name="server" type="xs:string" use="required"/> 
             <xs:attribute name="database" type="xs:string" use="required"/> 
             <xs:attribute name="username" type="xs:string" use="required"/> 
             <xs:attribute name="password" type="xs:string" use="required"/> 
             <xs:sequence> 
              <xs:element name="Queries" minOccurs="1" maxOccurs="1"> 
               <xs:complexType> 
                <xs:sequence> 
                 <xs:attribute name="query" type="xs:string" use="required"/> 
                 <xs:attribute name="expectedResults" type="xs:string" use="required"/> 
                </xs:sequence> 
               </xs:complexType> 
              </xs:element> 
             </xs:sequence> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
        <xs:element name="CLISession" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:attribute name="use_test.properties" type="xs:boolean" use="required"/> 
          <xs:sequence> 
           <xs:element name="login" minOccurs="1" maxOccurs="unbounded"> 
            <xs:complexType> 
             <xs:attribute name="host" type="xs:string" use="required"/> 
             <xs:attribute name="password" type="xs:string" use="required"/> 
             <xs:attribute name="username" type="xs:string" use="required"/> 
             <xs:sequence> 
              <xs:element name="Commands" minOccurs="1" maxOccurs="1"> 
               <xs:complexType> 
                <xs:sequence> 
                 <xs:element name="Command" minOccurs="1" maxOccurs="unbounded"> 
                  <xs:complexType> 
                   <xs:attribute name="exe" type="xs:string" use="required"/> 
                   <xs:attribute name="args" type="xs:string" use="required"/> 
                   <xs:attribute name="wait" type="xs:int" use="required"/> 
                   <xs:attribute name="expectedOutput" type="xs:string" use="required"/> 
                   <xs:attribute name="toVariable" type="xs:string" use="required"/> 
                  </xs:complexType> 
                 </xs:element> 
                </xs:sequence> 
               </xs:complexType> 
              </xs:element> 
             </xs:sequence> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
       </xs:choice> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

:

여기 내 XML이다. 이 줄은 내 XML 문서의 다음 줄과 관련이 있습니다.

<Test xmlns="http://MyURL"> 
+0

에 설명 된대로

덧붙여, 당신은 아마 내가 첫 번째 속성의 이름의 xmlns – thatidiotguy

답변

5

문제가 스키마에 있습니다. 그냥 줄을 지우십시오 :

<xs:attribute name="xmlns" type="xs:string" use="required"/> 

XML 문서가 정확합니다. 문서에서 URI http://MyURL을 값 네임 스페이스 xmlns을 할당하여 기본 네임 스페이스에 바인딩하도록 선택했습니다. 이것은 Namespaces in XML 1.0에서 설명한 것처럼 완벽합니다.

네임 스페이스는 특별합니다. 의 마지막 단락을 참조하십시오 XML Schema Part 1: 3.2.1 Attribute Details

[XML-인포 셋이] 등의 xmlns 또는 XMLNS 같은 이름을 가진 속성 구분 : 일반 속성에서 XSL, [네임 스페이스 속성]로 식별합니다. 따라서 스키마가 불필요하며 실제로 네임 스페이스 선언에 해당하는 속성 선언을 포함 할 수 없습니다. xmlns Not Allowed (§3.2.6)를 참조하십시오. 이 명세에서 네임 스페이스 선언을위한 기본값을 제공하는 수단은 제공되지 않는다.

작성한 스키마의 모든 컨텐츠는 사용자가 선언 한 네임 스페이스에 있으므로 문서 작성자가 정확하게 그런 식으로 선언하도록 묶을 필요는 없습니다. 상위 레벨 요소에서 네임 스페이스를 선언 할 수 있습니다. 또는 다른 네임 스페이스 접두어로 바인딩 할 수 있습니다. XML Schema Primer

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://MyURL"> 
+0

수없는 말을 믿고 당신의 최상위 schema 요소에 targetNamespace을 설정하여 문서에서 스키마의 네임 스페이스를 선언해야 고맙습니다. 한 가지 더 질문하십시오. 필자는 XML에서 두 번째 태그로''행을 사용하고 있습니다. XML을 소유하지 않아서 유효성을 검사 할 수있는 방법이 없으며 XML을 네임 스페이스로 만들 수 없습니다. 감사합니다. – Colin747