Bilaga 1. Exempel på utökning av tjänsteschema

Ändringar i tjänstescheman

Tjänste/interaktionernas scheman är något mindre komplicerade att beskriva jämfört med ändringar i domänscheman eftersom de bara påverkar en interaktion, så frågan om att räkna upp version på interaktionen är tydlig, men strukturen beskrivs ändå för enhetlighet och tydlighet samt för att beskriva hur schemafilerna kan/ska hanteras.

Utgångläge version 1.0

Typerna AType och BType definieras i domänschemat.

Typerna EType och DType är interaktionsspecifika och definieras därför i interaktionsschemat.

 

XML-exempel

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="urn:riv:example:Get_AResponder:1"
           xmlns:core="urn:riv:example:1"
           targetNamespace="urn:riv:example:Get_AResponder:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

    <xs:import schemaLocation="../../core_components/Core_1.0.xsd" namespace="urn:riv:example:1"/>

    <xs:element name="Get_A" type="tns:Get_AType"/>
    <xs:element name="Get_AResponse" type="tns:Get_AResponseType"/>

    <xs:complexType name="Get_AType">
        <xs:sequence>
            <xs:element name="A" type="core:AType"/>
            <xs:element name="B" type="core:BType"/>
            <xs:element name="D" type="tns:DType"/>
            <xs:element name="E" type="tns:EType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="EType">
        <xs:sequence>
            <xs:element name="E1" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="DType">
        <xs:sequence>
            <xs:element name="D1" type="xs:string"/>
            <xs:element name="D2" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_AResponseType">
        <xs:sequence>
            <xs:element name="result" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="urn:riv:example:1"
           targetNamespace="urn:riv:example:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

    <xs:complexType name="AType">
        <xs:sequence>
            <xs:element name="A1" type="xs:string"/>
            <xs:element name="A2" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="BType">
        <xs:sequence>
            <xs:element name="B1" type="xs:string"/>
            <xs:element name="B2" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

 

Version 1.1 utökning av typen DType i interaktionen Get_A

I version 1.1 så utökas typen DType.

  • Det nya elementet definieras i utökningsschema (Get_A_1.1_ext.xsd).

  • Det nya elementet läggs till typen DType i interaktionsschemat men som referenser.

  • Interaktionsschemat importerar Get_A_1.1_ext.xsd och får version 1.1 och denna ersätter 1.0 versionen.

 

XML-exempel (röd text är ändringar mot föregående version)

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="urn:riv:example:Get_AResponder:1"
           xmlns:core="urn:riv:example:1"
           xmlns:m1="urn:riv:example:1.1"
           targetNamespace="urn:riv:example:Get_AResponder:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

    <xs:import schemaLocation="../../core_components/Core_1.0.xsd" namespace="urn:riv:example:1"/>
    <xs:import schemaLocation="./Get_A_1.1_ext.xsd" namespace="urn:riv:example:1.1"/>

    <xs:element name="Get_A" type="tns:Get_AType"/>
    <xs:element name="Get_AResponse" type="tns:Get_AResponseType"/>

    <xs:complexType name="Get_AType">
        <xs:sequence>
            <xs:element name="A" type="core:AType"/>
            <xs:element name="B" type="core:BType"/>
            <xs:element name="D" type="tns:DType"/>
            <xs:element name="E" type="tns:EType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="EType">
        <xs:sequence>
            <xs:element name="E1" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="DType">
        <xs:sequence>
            <xs:element name="D1" type="xs:string"/>
            <xs:element name="D2" type="xs:string"/>
            <xs:element ref="m1:D3" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_AResponseType">
        <xs:sequence>
            <xs:element name="result" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="urn:riv:example:1.1"
           targetNamespace="urn:riv:example:1.1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

    <xs:element name="D3" type="xs:string"/>

</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="urn:riv:example:1"
           targetNamespace="urn:riv:example:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

    <xs:complexType name="AType">
        <xs:sequence>
            <xs:element name="A1" type="xs:string"/>
            <xs:element name="A2" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="BType">
        <xs:sequence>
            <xs:element name="B1" type="xs:string"/>
            <xs:element name="B2" type="xs:string"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

 

Utökning till 1.2

I version 1.2 tillkommer typen FType och elementet E2 som ska utöka typen EType också en interaktionsspecifik typ och därför utökas i interaktionsschemat.

  • Den nya typen definieras i utökningsschema (Get_A_1.2_ext.xsd).

  • Det nya elementet av den nya typen läggs till i utökningsschema.

  • Det nya elementen läggs till i typen EType i interaktionsschemat men som referens.

  • Interaktionsschemat importerar Get_A_1.2_ext.xsd och får version 1.2 och denna ersätter 1.1 versionen.

 

XML-exempel (röd text är ändringar mot föregående version)