Sex un XML

Meklējot informāciju par topošo Integrēto valsts informācijas sistēmu (IVIS), ko sola kaut kad šogad piestartēt, atradu, ka testa režīmā jau ir pieejams IVIS portāls. Īsti gan nav skaidrs, kādēļ tas ir publiski pieejams, jo pagaidām tas izskatas diezgan zaļš.

IVIS tiek veidots ļoti aktīvi izmantojot XML un dažnedažādus WS-* standartus web servisu veidošanā, lai to pēc tam izmantotu dažādu valsts reģistru integrācijā un e-pakalpojumu nodrošināšanā. Nu un lai e-pakalpojuma saņēmējs saprastu, kādus datus viņam e-pakalpojumu sniedzējs sūta, tiek definēta kaudze ar XML shēmām, kas apraksta metadatus par šiem e-pakalpojumiem.

Bet paskatoties uz patreiz pieejamajām XML shēmām rodas sajūta, ka tiek producēts pārāk daudz XMLa, kas nevienam īpaši nav vajadzīgs.

Kā piemēru apskatījos sexa definīciju (jeb latviski runājot personas dzimuma definīciju) :

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://ivis.eps.gov.lv/XMLSchemas/100001/Person/v1-0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pers="http://ivis.eps.gov.lv/XMLSchemas/100001/Person/v1-0" targetNamespace="http://ivis.eps.gov.lv/XMLSchemas/100001/Person/v1-0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0" id="Sex.xsd">
    <xs:annotation>
        <xs:appinfo>
            <ivis:Metadata xmlns:pers="http://ivis.eps.gov.lv/XMLSchemas/100001/Person/v1-0" xmlns:ivis="http://ivis.eps.gov.lv/XMLSchemas/100001/IVIS/v1-0">
                <ivis:Contributor href="http://www.rixtechnologies.lv" CodeListID="Authority" CodeListAgencyID="100001" CodeListAgencyName="ĪUMEPLS" CodeListLanguageID="lv" CodeListCodeValue="100002">SIA "RIX Technologies"</ivis:Contributor>
                <ivis:Contributor href="http://www.pmlp.gov.lv" CodeListID="Authority" CodeListAgencyID="100001" CodeListAgencyName="ĪUMEPLS" CodeListLanguageID="lv" CodeListCodeValue="100010">Pilsonības un Migrācijas Lietas Pārvalde</ivis:Contributor>
                <ivis:Creator href="http://www.eps.gov.lv" CodeListID="Authority" CodeListAgencyID="100001" CodeListAgencyName="ĪUMEPLS" CodeListLanguageID="lv" CodeListCodeValue="100001">Īpašu uzdevumu ministra e-pārvaldes lietās sekretariāts</ivis:Creator>
                <ivis:Date>
                    <ivis:Created>2007-05-02</ivis:Created>
                    <ivis:Declared>2007-05-02</ivis:Declared>
                    <ivis:Modified>2007-05-02</ivis:Modified>
                </ivis:Date>
                <ivis:Description>
                    <ivis:Default>Apraksta personas dzimumu</ivis:Default>
                </ivis:Description>
                <ivis:Format>
                    <ivis:Default>text/xml</ivis:Default>
                </ivis:Format>
                <ivis:Identifier Scheme="URN">URN:IVIS:100001:XSD-Person-Sex-v1-0</ivis:Identifier>
                <ivis:Language>LV</ivis:Language>
                <ivis:Publisher CodeListID="Authority" CodeListAgencyID="100001" CodeListAgencyName="ĪUMEPLS" CodeListLanguageID="lv" CodeListCodeValue="100001" href="https://ivis.eps.gov.lv/">ĪUMEPLS</ivis:Publisher>
                <ivis:Relation>
                    <ivis:ConformsTo href="URN:IVIS:100001:DOC-FR-XML-V1.00">XML shēmu izstrādes vadlīnijas</ivis:ConformsTo>
                    <ivis:ConformsTo>ISO/IEC 5218:2004</ivis:ConformsTo>
                </ivis:Relation>
                <ivis:Status>
                    <ivis:Default>PUBLISHED</ivis:Default>
                    <ivis:Version>v1.0</ivis:Version>
                </ivis:Status>
                <ivis:Subject>
                    <ivis:Category CodeListID="XMLSchemaType" CodeListAgencyID="100001" CodeListAgencyName="ĪUMEPLS" CodeListLanguageID="lv" CodeListCodeValue="1">Infrastruktūras XML shēma</ivis:Category>
                    <ivis:Keyword>IVIS</ivis:Keyword>
                    <ivis:Keyword>XML shēma</ivis:Keyword>
                    <ivis:Keyword>personas dzimums</ivis:Keyword>
                    <ivis:Project>Person</ivis:Project>
                </ivis:Subject>
                <ivis:Title>
                    <ivis:Default>Personas dzimums</ivis:Default>
                </ivis:Title>
            </ivis:Metadata>
        </xs:appinfo>
    </xs:annotation>
    <xs:complexType name="PersonSexStructure">
        <xs:annotation>
            <xs:documentation>Personas dzimuma struktūra</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="PersonSexCode" type="PersonSexCodeType">
                <xs:annotation>
                    <xs:documentation xml:lang="lv">Personas dzimuma kods</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PersonSex" type="PersonSexType">
                <xs:annotation>
                    <xs:documentation xml:lang="lv">Personas dzimums</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="PersonSexCodeType">
        <xs:annotation>
            <xs:documentation xml:lang="lv">Personas dzimuma koda tips</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="N" />
            <xs:enumeration value="V" />
            <xs:enumeration value="S" />
            <xs:enumeration value="Z" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PersonSexType">
        <xs:annotation>
            <xs:documentation xml:lang="lv">Personas dzimuma tipa atšifrejums</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="nezināma" id="N" />
            <xs:enumeration value="vīrietis" id="V" />
            <xs:enumeration value="sieviete" id="S" />
            <xs:enumeration value="neizvēlēta" id="Z" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Šajā XML dokumentā 83 rindiņās ir aprakstīts klasifikators, kas sastāv no 4 rindiņām. Vai tiešām to nevar aprakstīt kaut kā vienkāršāk? Jo saturīgā informācija šeit parādās tikai pēdējās rindiņās.

Citur plašajā internetā tiek diskutēts par to, ka dažnedāžādie WS-* standarti ir noveduši pie tā, ka web servisu veidošana un uzturēšana kļūst ļoti sarežģīta un ka sākotnējais “vienkāršais” SOAP nemaz vairs nav “Simple”. Tādēļ bieži sarežģīto WS-* standartu vietā tiek izmantota vienkāršākā REST pieeja web servisu veidošanai.

Augstākminētais piemērs pēc REST pieejas varētu izskatīties aptuveni sekojoši – uz pieprasījumu http://ivis.eps.gov.lv/sexes tiktu atgriezts

<sexes description="Personas dzimums">
  <sex><id>N</id><value>nezināma</value></sex>
  <sex><id>V</id><value>vīrietis</value></sex>
  <sex><id>S</id><value>sieviete</value></sex>
  <sex><id>Z</id><value>neizvēlēta</value></sex>
</sexes>

Būtu taču viss skaidrs arī no šāda vienkārša apraksta?

3 Responses to Sex un XML

  1. jk says:

    Ņemot vērā ka šādu XML būs kaudzēm, varu tikai iedomāties, par kādu murgu ātri vien pārvērtīsies šīs saimniecības uzturēšana. Nemaz nerunājot par to, ka izstrādātāji no šādām xml shēmām vems asinis.

  2. […] Iepriekš biju jau rakstījis, ka man radās aizdomas, ka valsts informācijas sistēmu integrācija tiek taisīta pārāk sarežģīti. Tādēļ interesēja, kā tas viss izskatīsies no gala lietotāju viedokļa – vismaz gala lietotājiem visu to XML shēmu sarežģītību nevajadzētu attēlot. […]

  3. Arvīds says:

    Nez vai “IT profesionālim” pieklātos šādus rakstus veidot, jo rodas iespaids, ka tu neizproti kāds ir šī faila mērķis. Gribētu redzēt, kā tu ar šādu 6-rindīti validētu XML dokumentus. Protams, metadati tiem XSD failiem ir daudz (iespējams, varbūt vairāk nekā vēlētos), taču tie dara tieši to, kas vajadzīgs.

Komentēt

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Mainīt )

Twitter picture

You are commenting using your Twitter account. Log Out / Mainīt )

Facebook photo

You are commenting using your Facebook account. Log Out / Mainīt )

Google+ photo

You are commenting using your Google+ account. Log Out / Mainīt )

Connecting to %s

%d bloggers like this: