2014-06-19 2 views
2

내 자신의 xml 스키마를 작성하려고합니다. 예를 들어xml 스키마의 규칙, 제한 및 요소를 업데이트 할 위치

, 내가 가진이 요소

<xs:element name="employee"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="firstname" type="xs:string"/> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 
나는이 스키마를 적용 할 수 있습니다

? 나는 내가 스키마를 입력으로 제공 할 수있는 무언가 (도구 또는 웹 사이트)를 원하고 나에게 XML 파일을 생성한다는 것을 의미한다. 게다가, 일부 XML 파일을 특정 스키마에 대해 유효성을 검사하고 싶습니다.

여기에 질문하는 규칙을 읽었습니다. 내 질문은 주제에서 벗어난 것 같지만 프로그래밍 문제에 대한 질문을하고 해결하기 위해 노력했기 때문에 문제가 아닌 것 같습니다. xml w3c의 스키마가 분명하지 않습니다.

나를 도와 주셔서 감사합니다. 당신은 this XML generator 같은 온라인 도구를 사용하여 스키마 샘플 XML을 생성 할 수 있습니다

답변

1

감사합니다. 인스턴스가 있으면 온라인 도구를 사용하여 인스턴스의 유효성을 검사 할 수도 있습니다. This XML validator을 사용하면 유효성 검증 쌍을 저장하고 나중에 참조 할 수 있습니다.

당신이 생성 또는 아무것도를 확인하기 전에, 당신은 <schema> 루트 요소 및 네임 스페이스 선언이 제대로 구성 스키마가 있어야합니다 : 당신이 위에서 언급 한 세대 서비스를 사용하는 경우

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="employee"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="firstname" type="xs:string"/> 
       <xs:element name="lastname" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

, 당신은을 얻는 것 샘플 인스턴스를 다음은 :가 별도로 스키마를 지정할 필요없이 검증 할 수 있도록

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Document created with online XML Editor http://xmlgrid.net 2014/06/19 14:51:15 --> 
<employee> 
    <firstname>test string</firstname> 
    <lastname>test string</lastname> 
</employee> 

당신은 또한 선언적 스키마에 인스턴스를 바인딩 할 수 있습니다.

<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="schema-uri.xsd"> 
    <firstname>test string</firstname> 
    <lastname>test string</lastname> 
</employee> 

하지 경우이다 (대상 네임 스페이스를 한 경우 : 스키마에는 대상 네임 스페이스가없는 경우 있습니다 (XSD 인스턴스 네임 스페이스의 자격을해야하는) noNamespaceSchemaLocation 속성 XML 스키마 인스턴스를 사용합니다 네임 스페이스와 그 위치를 매핑하는 스페이스로 구분 된 문자열 쌍 (한 문서에서 여러 스키마의 요소가있는 경우 더 많은 수)을 사용하는 schemaLocation을 사용합니다. 이 유효성을 검사하려면

<employee xmlns="employee-namespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="employee-namespace schema-uri.xsd"> 
    <firstname>test string</firstname> 
    <lastname>test string</lastname> 
</employee> 

, 당신의 스키마는 루트 요소에 targetNamespace 속성을 가질 필요가있다. 일반적으로 당신은 또한 기본 네임 스페이스로 대상 네임 스페이스를 선언 할 것, 필요한 경우 다른 지역의 유형를 참조 할 수 있습니다 SOU :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="employee-namespace" 
      xmlns="employee-namespace" 
      elementFormDefault="qualified"> 
    <xs:element name="employee"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="firstname" type="xs:string"/> 
       <xs:element name="lastname" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

많은 감사, 우수한 설명. –