2010-06-21 9 views
5

몇 가지 기본하지만 특정 요구 사항에 대해 간단한 XML 편집기를 만들려고합니다. 처리 방법을 잘 모르는 것은 사용자 지정 사용자 지정이 가능하도록하려는 것입니다. xsd 스키마 자체의 속성 (또는 무언가). .xml 파일이 어떤 정보 나 단서가 없다고xsd-schema의 사용자 지정 속성

내가 요소가 스키마의 'listable'여부에 대한 정보를 원하는
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Book"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="Author" type="xsd:string" listable="1" /> 
      <xsd:element name="Pages" type="xsd:int" /> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

(주의 :

이런 식으로 뭔가 내가 생각했던 것입니다 요소가 목록에 있는지 여부와 관계없이 목록에있는 특성은 편집기에서 요소를 구성하는 방법 일뿐입니다.

자신의 속성 일 필요는 없습니다. misc 속성이나 내가 그걸 가지고 놀 수있는 것이 있다면 괜찮을 것입니다. 문제는 위의 스키마가 유효성을 검사하지 않는다는 것입니다 ('listable'속성은이 컨텍스트에서 지원되지 않습니다.)

스키마에 이러한 종류의 정보를 저장할 수있는 방법이 있습니까?

새 네임 스페이스를 만드는 것이 가능해 보이지만 모든 네임 스페이스가 xsd의 특수 특성을 가질 수 있도록 네임 스페이스를 선언하는 방법을 알지 못합니다. (필자는 XML 파일을 사용하는 것을 피합니다. 이것을 위해). 그리고 이것을 위해 새로운 네임 스페이스를 만드는 것이 약간 과잉 된 것 같습니다.

아니면 완전히 잘못된 방향으로 가고 있습니까?

답변

5

이 정보는 자체 네임 스페이스에 있어야합니다. 그것을 저장하는 가장 좋은 장소는 속성에 대한 주석에 있습니다. 어떤 스키마 항목에 주석을 첨부 할 수 있으며 사람이 읽을 수있는 문서 용으로 설계된 xsd : documentation 요소와 기계로 처리 가능한 정보 용으로 지정된 xsd : appinfo를 포함 할 수 있습니다. 예는 다음과 같습니다.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:foo="http://www.example.org/bar"> 
    <xsd:element name="Book"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="Author" type="xsd:string" > 
     <xsd:annotation> 
      <xsd:appinfo> 
       <foo:listable value="true"/> 
      </xsd:appinfo> 
     </xsd:annotation> 
      </xsd:element> 
      <xsd:element name="Pages" type="xsd:int" /> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 
+0

감사합니다. 정확하게 필요한 것 같습니다. – Magnus

+0

@Aled G : xml 문서의 특정 요소에 특정 네임 스페이스가 있어야하는 경우 어떻게해야합니까? 나머지 요소는 이름 공간 선언을 포함하지 않습니다. 이 경우 스키마를 어떻게 작성해야합니까? – Ashwin

관련 문제