2010-01-18 2 views
8

특정 시스템의 제한으로 인해 우리는 약간 불편하게 형식화 된 XML을 사용해야합니다. 우리는 편리한 형태로 변환해야합니다.XSD : 임의의 이름을 가진 요소 정의

질문 :

  • 어떤 이름 있는 모든 속성이없는 자식 없음 (: 나는 XSD 스키마에서 다음과 같은 속성을 가진 요소를 정의 어떻게 그
+0

XSD에서는 불가능합니다. : - | –

+0

xsd만으로는 불가능합니다 - xml 인스턴스 문서는 요소 유형을 제한해야합니다. – Filburt

답변

6

당신은와 함께 <xsd:any /> 요소를 사용할 수 있습니다) 문제를 일으키지 무엇이다 0.

스키마

<?xml version="1.0" encoding="utf-8"?> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <!-- valid --> 
    <one xsi:type="st">value one</one> 
    <emptyone xsi:type="st"/> 

    <!-- invalid --> 
    <two name="myname" xsi:type="st">value two</two> 

    <!-- invalid --> 
    <three xsi:type="st"> 
     <four xsi:type="st">value four</four> 
    </three> 
</root> 

결론

당신은 XSD를의 SCHE의 간단한 형식을 적용하지

<?xml version="1.0" encoding="utf-8" ?> 
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="root"> 
     <xsd:complexType> 
      <xsd:sequence maxOccurs="unbounded"> 
       <xsd:any processContents="strict" namespace="##local"></xsd:any> 
      </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
    <xsd:simpleType name="st"> 
     <xsd:restriction base="xsd:string" /> 
    </xsd:simpleType> 
</xsd:schema> 

시험 XML 인스턴스 예 : .

+0

아니요. 할 수 없습니다. xsd : any는 임의의 구조를 허용하지만 any-name 요소에 하위 또는 특성이 없도록하려고합니다. – GSerg

+0

이 경우 귀하의 요구 사항이 상호 배타적 인 것으로 보입니다. – Filburt

+0

왜? AFAIC은 그렇지 않습니다. " 요소는"노드 "에서 발생하는 실제 텍스트와 관계없이 적합합니다. 반면에 은 그렇지 않습니다. – GSerg

관련 문제