2012-10-18 2 views
0

는 다음과 같은 유형을 지정된 값?제한 값은 다른 요소에 XSD

나는 xsd:keyxsd:keyref을 사용하고 있지만 사용법을 이해하는 데 어려움을 겪고 있다고 생각합니다.

+0

'다른 옵션'을 사용하면 자기 참조 옵션을 사용할 수 없다는 것을 강요하고 싶습니까? –

+0

@PetruGardea 실제로 좋을 것입니다.하지만 무엇보다 먼저이 질문에서 참조 부분 바로 뒤에 있습니다 :) – Svish

답변

0

XSD 1.0은이 기능을 지원하지 않습니다. XSD 1.1은 이것을 할 수 있도록 Conditional Types and assertions을 지원합니다. xsd 1.0의 경우 이것을 달성하기 위해 Schematron을 사용할 수 있습니다.

0

제약 조건은 요소의 컨텍스트에서만 표현 될 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:complexType name="Options"> 
     <xsd:sequence> 
      <xsd:element name="option" maxOccurs="unbounded"> 
       <xsd:complexType> 
        <xsd:all> 
         <xsd:element name="id" type="xsd:integer"/> 
         <xsd:element name="label" type="xsd:string"/> 
         <xsd:element name="value" type="xsd:string" minOccurs="0"/> 
         <xsd:element name="dependency" type="xsd:integer" minOccurs="0"/> 
        </xsd:all> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    <xsd:element name="Options" type="Options"> 
     <xsd:key name="PK"> 
      <xsd:selector xpath="option"/> 
      <xsd:field xpath="id"/> 
     </xsd:key> 
     <xsd:keyref name="FK" refer="PK"> 
      <xsd:selector xpath="option"/> 
      <xsd:field xpath="dependency"/> 
     </xsd:keyref> 
    </xsd:element> 
</xsd:schema> 

enter image description here

이 유형은 당신이 지시 한 제약과 함께 여러 인스턴스에서 언급 한하고자하는 경우에, 당신은 항상 전역 요소를 정의해야하며, 그 요소의 심판 귀하의 특정 상황.

귀하의 질문에 "다른"단어를 사용하는 것을 이해하는 것이 매우 중요하다는 것을 말씀 드리고자합니다. 당신이 정말로 그것을 의미한다면, 위는 당신에게 그것을주지 않습니다.

+0

주어진'Option'과'Options' 요소에 대해'key'와'keyref'가 정의되어야합니다 'Options'는 부모이고,'Option'은 자식이 아닙니다. – Svish

+0

@Svish, 네, 옵션 단계에 있어야합니다. 이것은 스펙에서 나온 것입니다 :'{selector}는 선언 된 요소의 인스턴스에 상대적으로 제한된 XPath ([XPath]) 표현식을 지정합니다. 이것은 제약이 적용되는 하위 요소 (즉, 선언 된 요소 내에 포함 된)의 노드 집합을 식별해야합니다.'기본적으로'option' 요소를 제한하려고합니다. 즉, 한 수준 위로 이동해야합니다. –