2011-03-30 4 views
-1

안녕하세요, 전 문서 정의 된 특성을 참조하는 데 어려움이 있습니다. ref 속성을 사용하는 요소 내부의 특성을 사용해야합니다. 그러나 테스트 XML 파일의 유효성을 검사하려고 할 때 속성이 정의되지 않았다는 오류가 발생합니다.XSD : 문서 전체 특성

속성 정의가 포함 된 attributeGroup 인라인 선언 또는 ref 속성으로 바꾼 경우 마법처럼 작동합니다. Visual Studio의 자동 완성 기능은 일부 접두사가있는 네임 스페이스를 다시 가져 오라고 제안하고 네임 스페이스 자체가 기본 네임 스페이스로 이미 가져 왔지만 (그 중 하나만 사용됩니다) 속성에 해당 접두사를 사용하려고합니다.

나는 거의 내 XML 내 XSD 파일을 모두 다운 삶은, 그래서이 남아있는 것입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<foo xmlns="http://example.com/test" attr="xy" /> 
<!-- Visual Studio autocompletes to this, which works too: 
<foo xmlns="http://example.com/test" a:attr="xy" xmlns:a="http://example.com/test" /> 
--> 

그리고 이것은 계획이다 :

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns="http://example.com/test" targetNamespace="http://example.com/test" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

    <xs:attribute name="attr" type="xs:string" /> 

    <xs:attributeGroup name="attrGroup"> 
    <xs:attribute name="attr" type="xs:string" /> 
    </xs:attributeGroup> 

    <xs:element name="foo"> 
    <xs:complexType> 
     <xs:attribute ref="attr" /> 
     <!-- These two examples work: 
     <xs:attributeGroup ref="attrGroup" /> 
     <xs:attribute name="attr" type="xs:string" /> 
     --> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

이의 원인이 무엇 행동을 고치려면 어떻게해야합니까?

답변

3

ref="attr"은 스키마 문서의 대상 네임 스페이스에 특성을 선언하는 name="attr" 인 최상위 특성 선언에 대한 참조입니다. 이것은 보통 원하는 것이 아니기 때문에 최상위 애트리뷰트 선언은 거의 볼 수 없다. (은 암시 적으로 규정되지 않았으므로) "attr"이라는 로컬 속성을 포함하는 속성 그룹을 참조하는 것이 더 나은 네임 스페이스가 아닙니다.

+0

아, 감사합니다. 그래서 기본 속성마다 어떤 네임 스페이스에도 없습니까? – poke