Opetusohjelma ja esimerkit

Yleinen vastaavuuksien määritys ja tunnusten vastaavuusmallit:
Tunnusten vastaavuusmallien luonti vertailutulosten parantamista varten

Tarkastele XML-esimerkkitiedostoa kahtena hiukan erilaisena, vasemmalla ja oikealla olevana versiona. Oletetaan, että extension-point-elementti on määritetty yksilöllisesti määritteellä id. Tekstierot on lihavoitu.

<?xml version="1.0" encoding="UTF-8"?>

<plugin
   name="%Plugin.name"
   id="org.eclipse.ui"
   version="1.0"
   provider-name="Object Technology International, Inc."
   class="org.eclipse.ui.internal.WorkbenchPlugin">

<extension-point name="%ExtPoint.editorMenus " id="editorActions"/>
<extension-point name="%ExtPoint.popupMenus " id="popupMenus"/>
<extension-point name="%ExtPoint.importWizards" id="importWizards"/>

</plugin>

  

<?xml version="1.0" encoding="UTF-8"?>

<plugin
   name="%Plugin.name"
   id="org.eclipse.ui"
   version="1.0"
   provider-name="Object Technology International, Inc."
   class="org.eclipse.ui.internal.WorkbenchPlugin">

<extension-point name="%ExtPoint.editorMenus " id="editorActions"/>
<extension-point name="%ExtPoint.popupMenus " id="popupMenus"/>
<extension-point name="%ExtPoint.exportWizards" id="exportWizards"/>

</plugin>


Oletetaan, että elementtien järjestys ohitetaan. Näiden kahden asiakirjan välinen rakenne-ero on se, että vasemman tiedoston extension-point-elementin id="importWizards" on korvattu oikealla olevassa tiedostossa uudella extension-point-elementin nimellä id="exportWizards". Käyttämällä yleistä vastaavuusalgoritmia Unordered, joka ohittaa järjestyksen, jossa XML-elementit ovat asiakirjassa, saadaan seuraavanlainen erorakenne.

Erorakenne käyttämällä yleistä vastaavuusalgoritmia

Kaksi ensimmäistä extension-point-elementtiä ovat samanlaiset ja vastaavat toisiaan eivätkä näy erorakenteessa. Jäljellä on kolmas extension-point-elementti kummassakin tiedostossa, ja myös ne vastaavat toisiaan, koska niillä on sama elementin nimi. Erorakenteessa näkyvät vasemman ja oikean tiedoston väliset kolmannen extension-point-elementin erot. Nämä erot koskevat määritteitä id ja name.
Nyt emme kuitenkaan keskity tähän asiaan. Haluamme nähdä erorakenteessa sen, että extension-point-elementti on poistettu vasemmasta tiedostosta ja oikeaan tiedostoon on lisätty extension-point-elementti.
Tämän takia luodaan uusi tunnusten vastaavuusmalli. Tämä voidaan tehdä käyttämällä sopivaa työkalurivin painiketta.

Uuden tunnusten vastaavuusmallin luonti

Oletetaan, että kutsutaan tunnusten vastaavuusmallia MyPlugin. Sitten tunnusten vastaavuusmalli MyPlugin valitaan työkalurivin avattavasta luettelosta.

Tunnusten vastaavuusmallin MyPlugin valinta

ja se lisätään seuraavaan vastaavuusmääritykseen:

Uuden vastaavuusmäärityksen luonti oletusasetussivusta     Uuden vastaavuusmäärityksen luonti pikavalikon avulla

Tämä voidaan tehdä oletusasetussivulta (vasemmalla) tai rakenne-esityksen pikavalikosta (oikealla).
Erorakenne näyttää nyt tällaiselta:
(Voit päivittää rakenne-esityksen napsauttamalla työkalurivin avattavan luettelon Näkymän päivityspainike-painiketta.

Erorakenne, jossa on käytetty tunnusten vastaavuusmallia MyPlugin

Tämä on haluamamme vertailutulos, joka saatiin aikaan luomalla tunnusten vastaavuusmalli.

XML-vertailun lisäosan mukana toimitetaan tunnusten vastaavuusmalli lisäosatiedostoja varten, jotka voidaan mukauttaa tiettyjä lisäosatiedostoja varten.

Varoitus:
Jos luodaan tunnusten vastaavuusmääritys, oletetaan, että tunnus on yksilöllinen eli ei ole kahta samatunnuksista XML-elementtiä, joilla on sama nimi ja sama polku. Jos näin ei ole, tunnusten vastaavuusmalli ei tuota järkevää erorakennetta.
Kun tunnus voi esiintyä useammin kuin kerran, on tarpeen käyttää yleistä algoritmia.

Kun tunnusten vastaavuusmallia käytetään ja on elementtejä, joilla ei ole tunnusten vastaavuusmääritystä, käytetään Unordered-vertailumetodia eli elementtien vastaavuus määritetään niiden samanlaisuuden perusteella eikä sen perusteella, missä järjestyksessä ne ovat asiakirjassa. Jos haluat määrittää, että elementin alielementtejä pitää verrata niiden esiintymisjärjestyksessä, katso seuraavia järjestettyä merkintää koskevia lisäohjeita.

Järjestettyjen merkintöjen lisäys

Järjestettyjä merkintöjä käyttämällä voidaan määrittää, että xml-elementin - joka on määritetty sen polun avulla - suoria alielementtejä (määritteet pois lukien) pitää verrata järjestyksen mukaan eikä oletusarvoisesti järjestykseen perustumattomalla tavalla.
Tarkastellaan esimerkkinä seuraavaa ANT-tiedostoa kahtena hieman erilaisena versiona:

<?xml version="1.0" encoding="UTF-8"?>

<project name="org.junit.wizards" default="export" basedir="..">
   <target name="export" depends="build">
      <mkdir dir="${destdir}" />
      <delete dir="${dest}" />
      <mkdir dir="${dest}" />
      <jar
         jarfile="${dest}/JUnitWizard.jar"
         basedir="bin"
      />
</project>

  

<?xml version="1.0" encoding="UTF-8"?>

<project name="org.junit.wizards" default="export" basedir="..">
   <target name="export" depends="build">
      <mkdir dir="${destdir}"/>
      <mkdir dir="${dest}"/>
      <delete dir="${dest}"/>
      <jar
         jarfile="${dest}/JUnitWizard.jar"
         basedir="bin"
      />
      <copy file="plugin.xml" todir="${dest}"/>
</project>


Tiedostojen väliset erot on lihavoitu. Kaksi elementtiä on vaihtanut paikkaa (<mkdir dir="${dest}"/> ja <delete dir="${dest}"/>) ja uusi elementti (<copy .../>) on liitetty kohde-elementtiin.
Jos tehdään vertailu järjestykseen perustumattomalla tavalla, tuloksena on seuraavanlainen erorakenne:

Erorakenne käytettäessä järjestykseen perustumatonta vastaavuutta

Se, että kaksi elementtiä on vaihtanut paikkaa, ei näy rakenteessa, koska elementtien järjestys ohitetaan.
ANT-tiedoston kannalta nämä kaksi asiakirjaa saavat aikaan hyvin erilaista toimintaa, koska target-elementin sisällä olevien elementtien järjestys on tärkeä. Siksi haluamme luoda järjestetyn merkinnän kohteelle ja siten ohjata vertailuohjelman vertaamaan kohteen alielementtejä niiden järjestyksen mukaisesti.
Tämä tehdään luomalla ensin uusi tunnusten vastaavuusmalli. Tämä voidaan tehdä käyttämällä työkalurivin sopivaa painiketta.

Uuden tunnusten vastaavuusmallin luonti

Oletetaan, että kutsutaan tunnusten vastaavuusmallia MyANT.
Sitten tunnusten vastaavuusmalli MyANT valitaan työkalurivin avattavasta luettelosta ja se lisätään seuraavaan järjestettyyn merkintään:

Uuden järjestetyn merkinnän luonti oletusasetussivulta     Uuden järjestetyn merkinnän luonti käyttämällä pikavalikkoa

Tämä voidaan tehdä oletusasetussivulta (vasemmalla) tai rakenne-esityksen pikavalikosta (oikealla).
Erorakenne näyttää nyt tällaiselta:
(Voit päivittää rakenne-esityksen napsauttamalla työkalurivin avattavan luettelon Näkymän päivityspainike-painiketta.

Erorakenne, jossa on käytetty tunnusten vastaavuusmallia MyANT

Tämä on haluamamme vertailutulos, joka saatiin aikaan luomalla järjestetty merkintä.

Lisäksi tunnusten vastaavuuksien avulla (katso edellistä kohtaa) järjestetyt alielementit voidaan yksilöidä. Erityisesti silloin, kun muutoksia on paljon, tämä parantaa vertailutuloksia.

XML-vertailun lisäosan mukana toimitetaan tunnusten vastaavuusmalli ANT-tiedostoja varten, jotka voidaan mukauttaa tiettyjä ANT-tiedostoja varten.