2011-11-25 2 views
0

XSD에 다음과 같은 몇 가지 규칙을 적용 할 수 있습니까? ID가 속성 인 모든 요소는 다른 요소가 해당 ID를 사용하지 않도록 고유 ID로 처리해야합니다. getElementById ("id")를 적용하는 방법은 그 이후에만 작동합니다.XSD 전역 규칙 적용

감사

+0

xs : key 요소를 사용해야합니다. 참조 : http://stackoverflow.com/questions/4491983/xml-schema-key-keyref-how-to-use-them –

+0

xsd : ID를 사용하면이 오류가 발생합니다 .-> attribucvc-datatype-valid.1.2. 1 : '41537'은 'NCName'의 유효한 값이 아닙니다. 그것은 내게 약간의 오류가 발생했습니다 : – Chandan

+0

xsd : id에 관해서는이 타입은 NCName이어서 반드시 숫자로 시작하면 안됩니다. 그것은이 유형의 기이입니다. –

답변

1

당신이 당신의 식별자의 숫자 만이있는 경우, 당신은 XS를 사용할 수 없습니다 ID를. 가 여기에 샘플 스키마입니다 :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="root" type="rootType"> 
     <xs:key name="attritemIdentifier"> 
      <xs:selector xpath="item"/> 
      <xs:field xpath="@XYZ"/> 
     </xs:key> 
    </xs:element> 
    <xs:complexType name="rootType"> 
     <xs:sequence> 
      <xs:element name="item" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="xs:string"> 
          <xs:attribute name="XYZ" type="xs:string"/> 
         </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

그리고 여기에 유효한 인스턴스 : 즉시 같은 값으로 XYZ 속성을 가지고

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <item XYZ="12345">item0</item> 
    <item XYZ="XYZ1">item1</item> 
    <item XYZ="XYZ2">item2</item> 
    <item XYZ="XYZ3">item3</item> 
    <item XYZ="XYZ4">item4</item> 
    <item XYZ="XYZ5">item5</item> 
    <item XYZ="XYZ9">item6</item> 
    <item XYZ="XYZ7">item7</item> 
</root> 

, 다음과 같은 오류가 발생합니다 :

CVC-신원 constraint.4.2.2 : 중복 키 값 [XYZ9] 신원 제약 요소 "루트"의 "attritemIdentifier"

에 대한 선언
+0

내 요소 중 하나가 ID 특성을 가지고 있다면 원하는 경우 유형이어야합니다. xsd : ID 그러면 어떻게 할 수 있습니까? 내 ID는 항상 영숫자입니다. – Chandan

+0

숫자로 시작하자마자 xs : Id 유형을 사용하지 않고 ID의 속성 이름을 사용할 수 있습니다. 내 스키마의 속성을 다음과 같이 바꿀 수 있습니다 :

+0

exaclty ... 위의 " "내 XSD에서 ... 그래서 기본적으로 고유 한 ID로 사용해야합니다 ...하지만 그때 내 XML 문서에 getElementById를 사용할 수 없습니다, 그것은 null을 반환합니다 .. bcoz 수 있습니다 ID를 중복 값을 가지고 ...하지만 코드에서 어떤 유효성 오류가 발생하지 않습니다. – Chandan

관련 문제