2017-12-12 21 views
0

안녕하세요, XML의 전자 학습 세션에서 수행해야 할 작업이 있습니다. 모든 문자열 값과 xml (요소 및 특성) 내부에서 발생하는 모든 정수 값을 제한해야합니다. 나는 그 값이 같은 타입 인 경우를 다루는 데 아무런 문제가 없었습니다. 하나가 정수이고 다른 하나가 문자열 일 때 어떻게 작동해야하는지 고민하고 있습니다. xml 파일은 다음과 같습니다. XML/XSD에서 복합 유형 (정수 및 문자열)을 사용하는 제한 사항을 사용하여 complexType을 어떻게 변경합니까?

<car id="5"> 
     <brand origin="Italy">Lamorghini</brand> 
     <model body="sedan">Huracan</model> 
     <year>2017</year> 
     <cc engineType="gasoline">5204</cc> 
     <registered>Switzerland</registered> 
    </car> 

은 지금은 내 주요 관심사 인 요소 "CC"에 집중하고있다. 그것이 특성을 가지고 있기 때문에 내가 이해할 수 있듯이 그것은 complextype 일 수있다. 그러나 요소의 값이 정수 (simpleType)이기 때문에 검사기는 오류를 준다.
<xsd:complexType name="TypeCC"> 
     <xsd:restriction base="xsd:integer"> 
      <xsd:minInclusive value="330"/> 
      <xsd:maxInlcusive value="8277"/> 
     </xsd:restriction> 
</xsd:complexType> 

나는 여러 가지 방법을 시도하지만, 그들 중 누구도 일하지, 나는 약간의 이해를 놓치고 가정합니다. 검사기는 예상대로 염려하는 것으로 기본 유형을 지정합니다.

나는 또한 위의 XML의 모든 속성이 <xsd:sequence/>의 외부에 배치하도록되어 있는지 알고 싶었지만, 복합 타입 요소 자동차 내부? 아래 예제와 같이?

<xsd:complexType name="TypeCar"> 
    <xsd:sequence> 
     <xsd:element name="brand" type="TypeBrand"/> 
     . 
     . 
     . 
    </xsd:sequence> 
    <xsd:attribute name="id" type="xsd:integer" use="required"/> 
     . 
     . 
    <xsd:attribute name="engineType" type="TypeEngine"/> 
</xsd:complexType 

게시 능력이 부족한 것에 대해 용서해주십시오. 요약하면 혼합 유형 및 올바른 속성 배치에 대한 문제를 해결하는 방법을 알고 싶습니다. 답변을 주셔서 감사합니다. 에 관한

+0

xcd : 정수 유형을 '단순한 내용의 복합 유형'(이 단계에서는 속성을 추가 할 수 있음)으로 확장 한 다음 적절한 범위로 제한하거나 먼저 xsd : 적절한 범위로 확장 한 다음이를 확장하는 복합 유형을 정의합니다. –

답변

0

내가 알고있는 것은 TypeCC의 기본으로 추가 complextype을 사용한다는 것입니다. 예를 들면 :하지만 복합 타입 내부 순서/> :

<xsd:element name="cc" type="tns:TypeCC"></xsd:element> 

<xsd:complexType name="BaseTypeCC" mixed="true"> 
    <xsd:simpleContent> 
     <xsd:extension base="xsd:integer"> 
      <xsd:attribute name='engineType' type="xsd:string"></xsd:attribute> 
     </xsd:extension>   
    </xsd:simpleContent> 
</xsd:complexType> 

<xsd:complexType name="TypeCC" mixed="false"> 
    <xsd:simpleContent> 
     <xsd:restriction base="tns:BaseTypeCC"> 
      <xsd:minInclusive value="330"/> 
      <xsd:maxInclusive value="8277"/> 
     </xsd:restriction>  
    </xsd:simpleContent> 
</xsd:complexType> 

가 나는 또한 위의 XML의 모든 속성이 < XSD의 외부에 배치 될 을 생각하면 알고 싶어 질문을 reagarding 요소 자동차?

car 요소 없음 전용 특성이 간다. 나머지는 자체 요소의 컨텐츠 모델 정의에 들어갑니다.

+0

나는 그것에 대해 생각하고 있었다. 하지만 더 쉽고 빠르고 읽기 쉬운 친숙한 솔루션이 있어야한다는 아이디어를 터널링했습니다. 나는 당신이 준 코드의 훨씬 더 복잡한 변형을하기 위해 가지고 있었지만 도움에 정말로 감사한다. 모든 것은 잘 작동하고 나는 그것의 이해를 얻었다. 닫힌 질문을 생각해보십시오. –

+0

도와 드리겠습니다. 질문을 더 잘 닫으려면 내 대답을 수락하거나/upvote하십시오. https://stackoverflow.com/help/someone-answers를 참조하십시오. – gtosto