어떻게 만드는 재사용할 수 있는"우리가"상태 입력 XML 스키마는?

StackOverflow https://stackoverflow.com/questions/227434

  •  03-07-2019
  •  | 
  •  

문제

나 XML 스키마를 포함하는 여러 주소:

<xs:element name="personal_address" maxOccurs="1">
  <!-- address fields go here -->
</xs:element>
<xs:element name="business_address" maxOccurs="1">
  <!-- address fields go here -->
</xs:element>

에 주는 요소를 포함한다"우리가"상태로 열거:

<xs:simpleType name="state">
    <xs:restriction base="xs:string">
        <xs:enumeration value="AL" />
        <xs:enumeration value="AK" />
        <xs:enumeration value="AS" />
                ....
            <xs:enumeration value="WY" />
        </xs:restriction>
</xs:simpleType>

나는 어떻게 쓰기에 대하여는"우리가"상태로 열거되면 다시 사용하여 그것의 각 내 주는 요소는?죄송하는 경우,사전에 이 n00b 질문에 내가 쓴 적이 XSD 다.

내 초기 자상에서 그것은 다음과 같다:

<xs:element name="business_address" maxOccurs="1">
  <!-- address fields go here -->
  <xs:element name="business_address_state" type="state" maxOccurs="1"></xs:element>
</xs:element>
도움이 되었습니까?

해결책

나는 당신이 올바른 길을 가고 있다고 생각합니다. XML 네임 스페이스와 더 관련이 있다고 생각합니다. 다음을 시도하십시오.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/foo"
    xmlns:tns="http://www.example.org/foo"
    elementFormDefault="qualified">
    <xs:element name="business_address">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="business_address_state"
                    type="tns:state" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="state">
        <xs:restriction base="xs:string">
            <xs:enumeration value="AL" />
            <xs:enumeration value="AK" />
            <xs:enumeration value="AS" />
            <xs:enumeration value="WY" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

유형은 다음과 같습니다 TNS : 상태 뿐만 아니라 상태

그리고 이것이 당신이 그것을 사용하는 방법입니다.

<?xml version="1.0" encoding="UTF-8"?>
<business_address xmlns="http://www.example.org/foo"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.org/foo foo.xsd ">
    <business_address_state>AL</business_address_state>
</business_address>

이 XML은 XSD의 TargetNamespace와 동일한 기본 네임 스페이스를 사용합니다.

다른 팁

는 네임스페이스는 데 도움을 유지 스키마가 조직되고 충돌을 방지하는, 그것은 네임스페이스 위에는 것을 허용한 재사용, 그것은 배치의 유형으로 즉각적인 아이의 <xs:schema>루트 그것을 만드는 글로벌 유형입니다.(사용 가능한 네임스페이스 내 w/o 네임스페이스 예선에서 어디서나는 tns 네임스페이스 표시 w/tns:규정이다.)

I 아보세요 건설 내 스키마 다음에"에덴 동산에"접근 방식을 극대화하고 재사용이 모두 요소와 종류(수 있습을 촉진하는 외부 논리를 참조하의 주의 깊게 만든 독특한 형/요소에,데이터 사전 데이터베이스에 저장됩니다.

참고 하면서"에덴의 정원"스키마 패턴을 제공하의 최대 재사용,그것은 또한 포함한 대부분의 작동합니다.이 게시물에,나는 링크를 제공하는 다른 패턴에 덮여 이 블로그는 시리즈입니다.

에덴 동산의 접근 방식 http://blogs.msdn.com/skaufman/archive/2005/05/10/416269.aspx

사용러한 모듈 방식으로 정의하는 모든 요소가 전 세계적으로 다음과 같은 베네치안 블라인드 방식의 모든 종류 정의를 선언했습니다.각 요소가 전 세계적으로 정의로 즉각적인 아이의 노드의 종류 특성을 설정할 수 있습 중 하나라는 유형입니다.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="TargetNamespace" xmlns:TN="TargetNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="BookInformation" type="BookInformationType"/>
    <xs:complexType name="BookInformationType">
        <xs:sequence>
            <xs:element ref="Title"/>
            <xs:element ref="ISBN"/>
            <xs:element ref="Publisher"/>
            <xs:element ref="PeopleInvolved" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PeopleInvolvedType">
        <xs:sequence>
            <xs:element name="Author"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="Title"/>
    <xs:element name="ISBN"/>
    <xs:element name="Publisher"/>
    <xs:element name="PeopleInvolved" type="PeopleInvolvedType"/>
</xs:schema>
이 방식의 장점은 스키마가 재사용할 수 있습니다.이 두 요소와 종류 정의되는 전 세계적으로 모두가 다시 사용할 수 있습니다.이 방법을 제공합의 최대 금액을 재사용할 수 있는 내용입니다.단점이 있는 스키마 자세한 정보를 표시합니다.이는 적절한 디자인을 만들 때 일반 라이브러리는 당신이 감당할 수 있는지에 대한 가정의 범위는 스키마 요소와 종류와 그들의 사용에서 다른 특히 스키마에서 참조하는 확장성 및 모듈......


이후 모든 개별 종류 및 요소는 하나의 글로벌 정의,이러한 정규 입자/구성 요소와 관련될 수 있습이나 식별자를 데이터베이스에서.고을 수도 있습니다 첫눈에 보는 귀찮은 지속적인 수동 작업을 유지하는 간 연계 텍스트 XSD 입자/구성 요소와 데이터베이스,SQL Server2005 년 수 있습니다 사실을 생성하는 정식 스키마를 구성 요소 식별자를 통해 문의

CREATE XML SCHEMA COLLECTION

http://technet.microsoft.com/en-us/library/ms179457.aspx

반대로,을 구성하는 스키마에서는 정식 입자,SQL Server2005 제공

SELECT xml_schema_namespace function

http://technet.microsoft.com/en-us/library/ms191170.aspx

캘리포니아·비·i·cal 관련해서 수학했다.(의 방정식,좌표계,등등) "간단한 또는 표준 형태로" http://dictionary.reference.com/browse/canonical

다른 구성하기 쉽지만,적은 설치하게 쉬운 주문/상의"비정규/중복"schema 화 패턴은 다음과 같습니다

러시아 인형 접근 방식 http://blogs.msdn.com/skaufman/archive/2005/04/21/410486.aspx

스키마가 하나의 글로벌 요소-루트 요소입니다.다른 모든 요소와의 유형이 중첩된 점진적으로 깊은 주름으로 인해 각 유형 피팅으로 한다.이후 요소에서 이 디자인은 로컬로 선언된 것이 되지 않을 재사용할 수 있는을 가져오거나 포함한 문입니다.

의 살라미는 슬라이스 접근 방식 http://blogs.msdn.com/skaufman/archive/2005/04/25/411809.aspx

모든 요소가 전체적으로 정의되지만 이 유형의 정의를 정의합니다.이 다른 방법으로 스키마 다시 사용할 수 있습니다.이 접근 방식,글로벌 요소로 로컬에 정의된 유형을 제공하는 완전한 설명 요소의 콘텐츠입니다.이 정보는'슬라이스'선언별 집계된 다 함께 있을 수도 있습니다 함께 재현성 기타 스키마.

베네치안 블라인 접근 방식 http://blogs.msdn.com/skaufman/archive/2005/04/29/413491.aspx

비슷한 러시아 인형 접근 방식에 그들은 그들 모두 사용하는 하나의 글로벌 요소입니다.베네치안 블라인 접근 방식에 대해 설명합 모듈형 접근 방식에 의해 지명하고 정의하는 모든 종류 정의를 전 세계적으로(반대로의 살라미는 슬라이스 접근 방식을 선언하는 요소를 전 세계적으로 형태로컬).각 전 세계적으로 정의 형식을 설명하는 개인"판금"및 재사용할 수 있는 다른 구성 요소입니다.또한,모든 로컬로 선언한 요소가 될 수 있는 네임스페이스 또는 자격을 갖춘 자격이 없는 네임스페이스(칸막이 될 수 있다"열"또는"닫기")에 따라 elementFormDefault 특성 설정에서 최고의 스키마.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top