Bilaga 1: Exempel på utökning av domänsschema

Inledning

Var en ändring behöver göras beror till största delen på var en typ är definierad i den första versionen och antingen finns definitionen i ett, för domänen, domänschema som importeras av samtliga interaktioner eller så är typen definierad direkt i schemat för en enskild interaktion.

Ändringar i domänscheman

Utgångläge version 1.0

Domänschemat definierar fyra stycken komplexa typer (AType, BType, CType och DType).
Dessa används lite olika i olika interaktioner.

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="A1234" type="core:AType"/>
            <xs:element name="C5678" type="core:CType"/>
            <xs:element name="D9101" type="core:DType"/>
            <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:Get_BResponder:1"
           xmlns:core="urn:riv:example:1"
           targetNamespace="urn:riv:example:Get_BResponder: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_B" type="tns:Get_BType"/>
    <xs:element name="Get_BResponse" type="tns:Get_BResponseType"/>

    <xs:complexType name="Get_BType">
        <xs:sequence>
            <xs:element name="A1234" type="core:AType"/>
            <xs:element name="B5678" type="core:BType"/>
            <xs:element name="D9101" type="core:DType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_BResponseType">
        <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:Get_CResponder:1"
           xmlns:core="urn:riv:example:1"
           targetNamespace="urn:riv:example:Get_CResponder: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_C" type="tns:Get_CType"/>
    <xs:element name="Get_CResponse" type="tns:Get_CResponseType"/>

    <xs:complexType name="Get_CType">
        <xs:sequence>
            <xs:element name="A1234" type="core:AType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_CResponseType">
        <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:complexType name="CType">
        <xs:sequence>
            <xs:element name="C1" 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:schema>

 

Version 1.1 Utökning av Type DType

I version 1.1 så utökas typen DType med ett nytt element.

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

  • Det nya elementet läggs till typen DType i Domänschemat men som referens.

  • Domänschemafilen importerar Core_1.1_ext.xsd får version 1.1 och denna ersätter 1.0 versionen.

  • Den nya domänschemafilen importeras i samtliga interaktionsscheman.

  • Eftersom typen DType används i interaktionerna Get_A & Get_B så ökas versionen på dessa interaktionsscheman (och WSDL filer).

  • Interaktionen Get_C använder inte typen DType så därför ökar inte versionen även fast importen av domänschemat ändras till att importera Core_1.1.xsd filen.

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.1">

    <xs:import schemaLocation="../../core_components/Core_1.1.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="A1234" type="core:AType"/>
            <xs:element name="C5678" type="core:CType"/>
            <xs:element name="D9101" type="core:DType"/>
            <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:Get_BResponder:1"
           xmlns:core="urn:riv:example:1"
           targetNamespace="urn:riv:example:Get_BResponder:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

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

    <xs:element name="Get_B" type="tns:Get_BType"/>
    <xs:element name="Get_BResponse" type="tns:Get_BResponseType"/>

    <xs:complexType name="Get_BType">
        <xs:sequence>
            <xs:element name="A1234" type="core:AType"/>
            <xs:element name="B5678" type="core:BType"/>
            <xs:element name="D9101" type="core:DType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_BResponseType">
        <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:Get_CResponder:1"
           xmlns:core="urn:riv:example:1"
           targetNamespace="urn:riv:example:Get_CResponder:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

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

    <xs:element name="Get_C" type="tns:Get_CType"/>
    <xs:element name="Get_CResponse" type="tns:Get_CResponseType"/>

    <xs:complexType name="Get_CType">
        <xs:sequence>
            <xs:element name="A1234" type="core:AType"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Get_CResponseType">
        <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"
           xmlns:m1="urn:riv:example:1.1"
           targetNamespace="urn:riv:example:1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

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

    <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:complexType name="CType">
        <xs:sequence>
            <xs:element name="C1" 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: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.1"
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

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

</xs:schema>