Site hosted by Angelfire.com: Build your free website today!

XML Nimeruum

xml.jpg

XML dokumentides kasutatavad elementide nimed võivad sattuda omavahel konflikti kui need sarnanevad omavahel.

XML'is elementide nimed määratakse autori poolt. Kasutdes XML dokumentides erinevaid XML rakendusi, võib tulemus olla raskesti saavutatav. Vaatame järgmist näidet. Siin XML kannab Html <table> informatsiooni:

<table>
   <tr>
   <td>Õunad</td>
   <td>Pirnid</td>
   </tr>
</table>

Selles näites XML kannab informatsiooni laua (table) kui mööblieseme kohta:

<table>
   <nimetus>Töölaud</nimetus>
   <laius>80</laius>
   <pikkus>120</pikkus>
</table>

Kui nüüd need kas fragmenti liita, tekkib nimede konflikt. Mõlemad sisaldavad <table> elementi kuid tähendused on täiesti erinevad. Parser ei oska neid erinevusi käsitseda.

Sellist konflikti XML'is on kerge vältida kui kasutada nime eesliidet e. prefiksit.
Antud näites XML kannab informatsiooni nii Html <table> kui ka mööblieseme kohta:

<h:table>
   <h:tr>
   <h:td>Õunad</h:td>
   <h:td>Pirnid</h:td>
   </h:tr>

</h:table>
   <t:table>
   <t:nimetus>Töölaud</t:nimetus>
   <t:laius>80</t:laius>
   <t:pikkus>120</t:pikkus>
</t:table>

Sellega on nimede konflikt lahendatud sest mõlemad <table> elemendid kannavad erinevaid nimesid.

XML Nimeruum - xmlns Atribuut

Kui sa kasutad XML'is nimeruumis eesliidet siis tuleb see ka dokumendis määratleda.

Nimeruum e. eesliitega nimi tuleb määratleda elemendi alguse märgises, xmlns atribuudi abil.

Nimeruumi deklaratsioon e. lausung kirjutatakse järgmiselt: xmlns:eesliide="URI".

     <juur>
<h:table> xmlns:h="http://www.mingi/sait.com/">
   <h:tr>
   <h:td>Õunad</h:td>
   <h:td>Pirnid</h:td>
   </h:tr>

</h:table> xmlns:t="http://www.veel/mingi/sait.com/">
   <t:table>
   <t:nimetus>Töölaud</t:nimetus>
   <t:laius>80</t:laius>
   <t:pikkus>120</t:pikkus>
</t:table>
     </juur>

Ülal toodud näites, xmlns atribuut annab märgisele <table> eesliited h: ja t:.

Kui elemendi nimeruum on määratud siis kõik elemendi tütar-elemendid saavad vastava eesliite.

Pane tähele: nimeruumi URI pole mõeldud parserile, informatsiooni otsimiseks.

URI (Uniform Resource Identifier e. Ühtne Ressursi Identifitseerija)

Kõige tuntum URI on URL (Uniform Resource Locator) mis identifitseerib Interneti domeeni aadressi.

Vaikimisi Nimeruum

Elemendi vaikimisi nimeruum võimaldab jätta kõik tütar-elemendid ilma eesliiteta:

xmlns="namespaceURI"

See XML kannab endas table informatsiooni:

<table xmlns="http://mingisait.com/TR/html4/">
   <tr>
   <td>Öunad</td>
   <td>Pirnid</td>
   </tr>
</table>

See XML kannab endas mööblieseme informatsiooni:

<table xmlns="http://veel/mingisait.com/puitmoobel">
   <nimetus>Töölaud</nimetus>
   <laius>80</laius>
   <pikkus>120</pikkus>
</table>

Nimeruumi tegelik kasutus

XSLT on XML keel mida kasutatakse XML dokumendi transformeerimiseks teise formaati, näiteks HTML. Allpool olevas näites on näha, et enamik märgiseid on Html märgised. Need mis ei ole Html märgised saavad endale eesliite xsl:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform":

<?xml version="1.0" encoding="ISO-8859-1"?>
		<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

		<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">

    <tr>
      <th align="left">Title</th>
      <th align="left">Artist</th>
    </tr>

    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>

    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
		</xsl:stylesheet>




Punane Nool Vasak Punane Nool