İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Bir Makale XML'i Örneği

Bu bölümde kendimize bir makale xml dili yaratıyoruz. Bu dil bir makale bilgisini saklayacak. Makalenin yazarının adı,soyadı ve mail adresi, makale yazılma tarihi, başlık, makale için resim ve yazı bölümleri olacak.

Bir makale örneği aşağıda gözükmektedir.

test2.xmlİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9"> 
  2 <article xmlns="http://www.test.com"	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"	xsi:schemaLocation="http://www.test.com article.xsd">
  3 	<author>
  4 		<name>Ali</name>
  5 		<surname>Kaya</surname>
  6 		<mail>a@b.com</mail>
  7 	</author>
  8 	<date>2004-01-01</date>
  9 	<image src="makale.jpg"></image>
 10 	<title>Bu bir deneme başlığıdır</title>
 11 	<section>
 12 		<heading>Başlık 1</heading>
 13 		<parag>Bu ilk paragraftır. Bu ilk paragraftır. Bu ilk paragraftır. Bu ilk paragraftır. Bu ilk paragraftır. Bu ilk paragraftır.</parag>
 14 		<parag>Bu ikinci paragraftır. Bu ikinci paragraftır. Bu ikinci paragraftır. Bu ikinci paragraftır. Bu ikinci paragraftır. Bu ikinci paragraftır. Bu ikinci paragraftır.</parag>
 15 	</section>	
 16 	<section>
 17 		<heading>Başlık 2</heading>
 18 		<parag>Bu üçüncü paragraftır. Link örneği : <link address="http://www.w3.org">Tikla</link> Bu üçüncü paragraftır. Bu üçüncü paragraftır .Bu üçüncü paragraftır <link address="http://www.test.com">İkinci Tikla</link></parag>
 19 	</section>	
 20 </article>

root elementi article oluyor. author elementi içinde makale yazarı hakkında bilgi veriliyor. date makalenin tarihi, title makalenin başlığı, image ise makalenin resmi veriliyor. section ise bir başlığı ve paragrafları olan içerik bölümleridir. Her section'un bir heading ile başlığı veriliyor. parag elementi paragraf için kullanılıyor. link elementi ise link koymak için kullanılmaktadır.

Bu tür XML'lerin kurallara uygun olup olmadığını anlamak için bir schema yaratıyoruz. Hangi elementlerin kullanılması gerektiği, bir elementin içinde hangi elementlerinin olacağı, bir elementin ne tür attributeleri olacağı gibi bilgiler schema ile verilirler. Aşağıda makale için bir schema yaratıyoruz.

article.xsdİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  2     targetNamespace="http://www.test.com"
  3     xmlns="http://www.test.com">
  4     <xs:element name="article">    
  5         <xs:complexType>
  6             <xs:sequence>
  7                 <xs:element ref="author" minOccurs="0"/>
  8                 <xs:element ref="date"/>
  9                 <xs:element ref="image" minOccurs="0"/>                
 10                 <xs:element ref="title"/>
 11                 <xs:element ref="section" maxOccurs="unbounded"/>
 12             </xs:sequence>
 13   </xs:complexType>    
 14     </xs:element>   
 15     
 16     <xs:element name="author">
 17         <xs:complexType>
 18             <xs:sequence>
 19                 <xs:element ref="name"/>
 20                 <xs:element ref="surname"/>
 21                 <xs:element ref="mail"/>
 22             </xs:sequence>
 23         </xs:complexType>        
 24     </xs:element>
 25     
 26     <xs:element name="name" type="xs:string" />
 27     <xs:element name="surname" type="xs:string" />
 28     <xs:element name="mail" type="xs:string" />
 29     <xs:element name="date" type="xs:date"/>  
 30     
 31     <xs:element name="image">
 32         <xs:complexType>
 33             <xs:attribute name="src" type="xs:string"/>        
 34   </xs:complexType>        
 35     </xs:element>        
 36     
 37     <xs:element name="title" type="xs:string"/>       
 38     
 39     <xs:element name="section"> 
 40         <xs:complexType>
 41             <xs:sequence>
 42                 <xs:element ref="heading" minOccurs="0"/> 
 43                 <xs:element ref="parag" minOccurs="0" maxOccurs="unbounded"/> 
 44             </xs:sequence>
 45   </xs:complexType>        
 46     </xs:element>    
 47     
 48     <xs:element name="heading" type="xs:string"/>     
 49                         
 50     <xs:element name="parag">    
 51         <xs:complexType mixed="true">
 52             <xs:sequence>
 53                 <xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/>        
 54             </xs:sequence>
 55   </xs:complexType>    
 56     </xs:element>
 57              
 58     <xs:element name="link"> 
 59         <xs:complexType mixed="true">
 60             <xs:attribute name="address" type="xs:string"/>
 61       </xs:complexType>     
 62     </xs:element> 
 63     
 64 </xs:schema>

Bu dosyada tüm elementler ve attributeler tanımlanmıştır. Bazı elementler sadece string tutarlarken bazı elementler içine birden fazla element girebilir. Örneğin article elementi içinde author,date,image,title ve section elementleri olmaktadır. author ve image element için minOccurs 0 verilmiştir . Hiç kullanılmayabilir. section elementi için maxOccurs değeri unbounded olarak verilmiştir. 1 veya istenildiği kadar kullanılabilir.

article elementinden sonra author elementi tanımlanmıştır. author elementi içinde name,surname ve mail elementi olacaktır. name,surname,mail ve date elementi tanımlanmıştır. date elementinin type özelliği "xs:date" olarak verilmiştir. daha sonra image elementi tanımlanmıştır. image elementinin src attributesi olduğu belirtilmiştir. section elementi içinde ise heading ve parag elementi tanımlanmıştır. En son heading, parag ve link elementi tanımlanmıştır. parag elementi için mixed=true olduğu için hem string değer ve aralarında element olabilir.

Makale xml'ini html'e çevirmek için aşağıdaki XSLT yapılmıştır.

article.xslİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <xsl:stylesheet 
  2     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">     
  3 <xsl:template match="/">
  4     <html>
  5         <head>
  6             <title><xsl:value-of select="/article/title"/></title>
  7         </head>
  8         <body>
  9             <xsl:apply-templates/>
 10         </body>
 11     </html>
 12 </xsl:template>   
 13 <xsl:template match="author">
 14     <table style="float:right">
 15     <tr>
 16         <td><xsl:value-of select="name"/> <xsl:value-of select="surname"/></td>
 17     </tr>
 18     <tr>
 19         <td><xsl:value-of select="mail"/></td>
 20     </tr>
 21     </table>
 22 </xsl:template> 
 23 <xsl:template match="title">
 24     <h1><xsl:value-of select="."/></h1>
 25 </xsl:template> 
 26 <xsl:template match="date">
 27     <div><xsl:value-of select="."/></div>
 28 </xsl:template>
 29 <xsl:template match="image">
 30     <img style="float:left" src="{@src}"></img>
 31 </xsl:template>
 32 <xsl:template match="section">
 33     <xsl:apply-templates/>
 34 </xsl:template> 
 35    
 36 <xsl:template match="heading">
 37     <h3><xsl:value-of select="."/></h3>
 38 </xsl:template> 
 39 <xsl:template match="parag">
 40     <p><xsl:apply-templates/></p>
 41 </xsl:template>
 42 <xsl:template match="link">
 43     <a href="{@address}"><xsl:value-of select="."/></a>
 44 </xsl:template>
 45 </xsl:stylesheet>

Bu XSL ile bir makale HTML'e çevrilebiliecek. Yukarıdaki makale çevrildiğinde aşağıdaki gibi bir görüntü elde edilir.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır