2014-04-07 2 views
0

xml 리소스 파일 인 Visual Studio에서 .resx 파일을 생성하면 XSD 스키마가 동일한 파일에 포함됩니다. (예 참조) 다른 도구가이 파일을 해석 할 수 있으며 "유효"한 것 같습니다. 그럼에도 불구하고 w3schools에 대한 모든 정보를 찾을 수 없습니다. 이론은 xsd 파일을 작성하고이를 xml 파일에서 참조하도록 가르친다. 일반적으로 유효성 검사에는 xsd 파일과 xml 파일이 제공됩니다.XML 파일에 XSD 스키마 정의를 포함 할 수 있습니까?

주어진 예제와 같이 xml 파일에서 xsd 스키마를 정의하는 것이 유효합니까? 그렇다면 적용 범위는 어디입니까? 노드에 포함됩니까? 더 많은 설명이 포함 된 링크를 제공 할 수 있다면 잘 부탁드립니다. 응답

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
     <xsd:element name="root" msdata:IsDataSet="true"> 
      <xsd:complexType> 
       <xsd:choice maxOccurs="unbounded"> 
        <xsd:element name="data"> 
         <xsd:complexType> 
          <xsd:sequence> 
           <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> 
           <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> 
          </xsd:sequence> 
          <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> 
          <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> 
          <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> 
         </xsd:complexType> 
        </xsd:element> 
        <xsd:element name="resheader"> 
         <xsd:complexType> 
          <xsd:sequence> 
           <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> 
          </xsd:sequence> 
          <xsd:attribute name="name" type="xsd:string" use="required" /> 
         </xsd:complexType> 
        </xsd:element> 
       </xsd:choice> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:schema> 
    <resheader name="resmimetype"> 
     <value>text/microsoft-resx</value> 
    </resheader> 
    <resheader name="version"> 
     <value>1.3</value> 
    </resheader> 
    <resheader name="reader"> 
     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 
    <resheader name="writer"> 
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 
    <data name="Key"> 
    <value>Value</value> 
    </data> 
</root> 

편집 의견을 adrianos합니다 : 나는 참으로 W3C의 웹 사이트를 검토해야한다. 읽고 이해하는 것이 훨씬 더 어려워요. 지금은 그랬지만 그 짧은 시간에 나는 전체 그림을 얻을 수 없습니다. 찾은 내용 :

웹에 액세스하는 방법 Attribute Declaration for the 'schemaLocation' attribute

  • 스키마는 유효한 것으로 간주되어야합니다. 실용적이지만 데이터와 정의를 혼합하는 것과 같습니다.

  • +2

    물론 유효합니다. 참조는 www.w3c.org이어야하며, w3schools는 (IMO) 끔찍하고 불완전한 참조입니다. –

    +0

    왜 물론입니까? ;) 루트 요소에 schema라는 요소가 포함되어 있으면 전체 파일에 대한 스키마입니다 ...? –

    +0

    1) 그렇습니다. 인라인 스키마에 대한 지원은 필수는 아니지만 표준 (스키마 자체에 )입니다. 2) 아니요, 어디서부터 시작되었는지 만 확인합니다 (따라서 전체 문서는 검증 할 수 없지만 형제 자매 만 유효성을 검사합니다). 내 생각에 (그러나 나는 더 이상 알지 못한다) ID와 네임 스페이스에 대한 몇 가지 트릭을 사용하여 루트 자체를 검증 할 수도 있지만 ... –

    답변

    0

    귀하의 모든 언급을 감안할 때, 나는 잘 구성된 XML과 유효한 XML의 차이점을 알고 있다고 확신합니다. 그래서, 당신이 "그것이 맞습니까?"라고 물으면, 당신은 무엇을 염두에 두 고 있습니까? 무엇에 따라 유효합니까?

    샘플이 유효 할 수도 있지만 일부 Microsoft 사양에 따른 것일 수 있습니다. 다른 도구는이 도구에서 공백이 될 가능성이 큽니다.

    XSD가있는 임의의 XML에 대해 더 많이 생각하고 있다면 XSD를 XML과 함께 포함시키는 "표준"방법이 있는지 물어보고 마술처럼 타사 XSD 인식 XML 프로세서는 XSD를 선택하여 나머지 XML의 유효성을 검사하는 데 사용합니다. 그렇다면 표준이 없다고 생각합니다.

    예제와 마찬가지로 XSD를 인라인 할 고유 한 XML 형식을 정의하려는 경우 XML 또는 XSD 사양에는 사용자가 수행 할 수있는 것이 없습니다. 다른 도구로는 가져올 수 없지만 독점 응용 프로그램에서 작동 할 수는 있습니다. 상호 운용성, 버전 관리 등과 관련된 이유로 데이터와 함께 스키마를 포함하는 일부 데이터 형식이 있음을 지적하고자합니다.

    유효성 검사에 사용할 XSD에 대한 "힌트"를 제공하는 표준화 된 방법은 다음과 같습니다. 실제로 참조 된 schemaLocation 및 noNamespaceSchemaLocation의 XML 스키마 인스턴스 특성; 그러나이 사양은 프로세서가 무시할 수 있다는 "힌트"라고 말합니다. 따라서 유효하더라도 작동하지 않을 수도 있습니다.

    Example 1 (네임 스페이스 없음) :

    <person xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://adventure-works.com/schemas/person.xsd"> 
        <name>John</name> 
        <height>59</height> 
    </person> 
    

    Example 2 (복수의 이름 공간에 여러 스키마) :

    <p:Person xmlns:p="http://contoso.com/People" xmlns:v="http://contoso.com /Vehicles" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= 
        "http://contoso.com/People 
         http://contoso.com/schemas/people.xsd 
         http://contoso.com/schemas/Vehicles 
         http://contoso.com/schemas/vehicles.xsd 
         http://contoso.com/schemas/People 
         http://contoso.com/schemas/people.xsd"> 
        <name>John</name> 
        <age>28</age> 
        <height>59</height> 
        <v:Vehicle> 
         <color>Red</color> 
         <wheels>4</wheels> 
         <seats>2</seats> 
        </v:Vehicle> 
    </p:Person> 
    

    거의 모든 XML 편집기에서, 당신의 XML과 XSD를 연결하는 자신의 지원 메커니즘을 가지고 XSD 카탈로그에 대한 개별 속성 및 물론 XSI 속성에 대한 지원

    XML의 "인라인"XSD는 까다로운 비즈니스입니다. 여러 XML 인스턴스가 포함 된 경우 유지 관리 문제가 발생합니다. 어떤 이유로 든 이와 같은 것이 필요할 경우, XInclude을 사용합니다.

    +0

    당신의 대답은 내가 반영 할 때 나에게 논리 다. 나는 XML 문서에 "인라인"체계 정보를 포함시키기 위해 w3c가 의도 한 표준 방법이 있다면, 당신이 올바르게 가정 한대로 유효하다는 의미입니다. 고맙습니다! –

    관련 문제