|
İnternette Özel Belge Türleri
İnternette özel belgeleri yayınlamak için ASP'de
ContentType özelliğini belge türü olarak ayarlamak yeterlidir. Bu, ASP
dosyasının resim, xml, word ya da başka bir belge türü olarak yorumlanabilmesini sağlar.
Windows farklı belge türleri için özelleştirilmiş komutların çalıştırılmasına,
belgeler için farklı resimlerin ve ipucu bilgilerinin görüntülenmesine olanak tanır. Her
dosya uzantısı için farklı komut listeleri açılabilir, bu dosyalar için özel
simgeler görüntülenebilir. HTML belgeleri için ise dosya uzantısı tek olduğu
halde farklı davranışlar geliştirilebilir.
- İnternette yayınlanan belgeleri özelleştirmek
- ASP dosyasından Excel, Word ve diğer Office belgelerini üretmek
- ASP ile dinamik takvim dosyası üretmek
- HTML içinde belge türü tanımlamak
- Windows'ta kendi belge türünüzü tanımlayın
- Belge türleri için özel simgeler görüntülemek
İNTERNETTE DOSYA TÜRLERİ
Internet'te yayınlanan belgelerin özelleştirilip, web gözatıcıları dışındaki
programlarda geçerli olarak açılabilmesi, Windows'un sunduğu bir olanaktır.
Yüklenen bir web belgesinin içerik türü bilgisi sistemde araştırıldıktan sonra,
belgenin ilgili uygulama ile açılması sağlanabilir.
Internet'ten yüklenen her belge için ContentType özelliği mevcuttur. HTML
belgeleri için bu geçerli olarak "text/html"dir. ASP belgelerinde de aksi
belirtilmediği sürece aynıdır.
<% Response.Write Response.ContentType %>
Yukarıdaki ASP komutu geçerli ContentType özelliğini yazdırmaktadır. Bu özellik
belgenin farklı türde yorumlanmasını da sağlayabilir. XML Kursu'nu takip
edenler, ASP ile XML belgesi üretilirken "text/xml" değerini kullandığımızı
hatırlayacaklardır.
<% Response.ContentType = "text/xml" %>
Belgenin HTML'den farklı şekilde yorumlanmasının amaçlandığı durumlar için bu
yöntem zengin seçenekler sunmaktadır. Örneğin bu değeri "application/msword"
şeklinde değiştirerek belgenin bir anda Word içinde açılmasını sağlayabiliriz.
<%@ Language=VBScript %>
<% Response.ContentType="application/msword" %>
<html>
<body>
Bu belge ASP ile üretilmiş bir Word belgesidir.
Response.ContentType özelliğine <b>"<%
=Response.ContentType %>"</b> değeri atanmıştır.
</body>
</html>
Excel için ise "application/vnd.ms-excel" kullanılıyor.
excel_belge.asp.txt
word_belge.asp.txt

Microsoft'un sitelerinde çokça kullanılan takvim dosyası yükleme uygulaması da
benzer yöntemle yapılmaktadır. Bir seminer hakkında duyuru yayınlandığında ek
olarak dinamik bir takvim (ics) dosyası yüklenebiliyor.
Takvim belgeleri oluşturmak için ContentType özelliğine "text/calendar" değeri
atanıyor. Geçerli olarak ics uzantısına sahip bir MS Outlook takvim belgesinin
içeriği aşağıdakine benzerdir.
toplanti.ics.txt
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
ORGANIZER:MAILTO:aliveli@deneme123.com
DTSTART:20020906T090000Z
DTEND:20020906T093000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:040000008200E00074C5B7101A82E00800000000A0A14F273251C
DTSTAMP:20020831T180537Z
DESCRIPTION:Tum calisanlar bu tarihte toplantiya katilacaktir.\nToplantinin
konusu yillik pazarlama faaliyetlerimiz olacaktir.
SUMMARY:Sirket Toplantisi
PRIORITY:5
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
ContentType özelliğini gerekli şekilde ayarladıktan sonra yukarıdaki gibi bir
metni yayınlamak yeterlidir.
toplanti.asp.txt
<%@ Language=VBSCript %><%
Response.ContentType="text/calendar"
%>BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
...
...

Takvim bilgilerini el ile girmek yerine Microsoft Outlook'ta bunu yapmak daha
kolaydır. Outlook'ta Takvim (Calendar) sayfasına gelip yeni bir kayıt
(appointment) oluşturduktan sonra File/SaveAs ile bunu iCalendar (ics) biçimine
dönüştürebilirsiniz.
Office belgelerini yayınlarken belgenin Office
uygulamasında değil de, Internet Explorer içinde açılmasından
şikayetçiyseniz birkaç küçük ayar değişikliği ile bunu giderebilirsiiz.
Windows Gezgini'nde iken Tools / Folder Options / File Types sekmesini açıp
Doc uzantısını bulun. Advanced komutunu verdikten sonra açılan diyalog
kutusundaki "Browse in same window" seçeneğindeki işareti kaldırın.
Böylelikle Internet’ten bir word belgesi yüklemek istediğinizde belge
Internet Explorer'da değil, Word uygulaması içinde açılacak. Aynı ayarlamayı
diğer Office uygulamaları için de yapabilirsiniz.

Bu seçeneğin Registry'deki kaydı HKCR\Word.Document.8 altında tutuluyor.
Burada REG_DWORD tipinde BrowserFlags adlı bir değer oluşturulup değeri 8
yapılmalı. (Excel 2000 için "Excel.Sheet.8". Powerpoint 2000 sunuları için
"PowerPoint.Show.8" ağaçlarında benzer değişiklik yapılmalı.)
|
ÖZEL HTML BELGELERİ
Windows'taki tüm belge türü tanımları kayıt defterinde (Registry) tutulur. Bu
yüzden belgeler açılırken Windows'un nasıl davranacağını belirlemek mümkündür.
Özellikle dosya uzantılarına göre birçok özelleştirme yapılabilir. Bir dosya
türü izlenirken gösterilen ipucu bilgisinden tutun, o türe ait simgenin nereden
alınacağı, dosyayı açabilecek uygulamaların listesi, fare menüsündeki komutlar
ve ayrıntılı daha birçok bilgi kayıt defterinde tanımlanabilmektedir.
Bununla birlikte Windows 2000'den itibaren HTML belgelerine özgü olarak birtakım
özelleştirilmelerin yapılması mümkün olmaktadır. Bunlardan ikisi belge-klasör
bağlantısı ve html içinde belge türü tanımlamasıdır.
Internet Explorer'da iken kaydedilen bir HTML belgesi için genellikle ekte
"_dosyalar" ya da "_files" uzantılı bir klasör oluşturulur ve sayfadaki resimler
ve diğer dosyalar bu klasör içine kaydedilir. Sonrasında Windows 2000 htm
dosyasını ve ekteki "_files" klasörünü bağlı olarak kabul eder. Bunlardan biri
taşındığında ya da silindiğinde diğeri için de aynı işlem uygulanır.
Bunu denemek için htm uzantılı, içeriği önemli olmayan geçici bir dosya
oluşturun. Aynı yerde adı bu dosyanın ön adı ile aynı olan bir klasör oluşturun.
Bu klasörün adının sonuna işletim sistemi Türkçe ise "_dosyalar", İngilizce ise
"_files" ekini getirin. Her ne durumda olursa olsun Windows 2000 bu dosya ve
klasörü bağlantılı olarak kabul eder ve biri taşındığında da diğeri taşınır.
Silinme durumunda da aynı şey geçerlidir. ("_files" ekinde "_" işareti yerine
"." işareti de kullanılabilir.)
Bu özelliği HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer anahtarı
altındaki NoFileFolderConnection bilgisinin değerini "1" yaparak devredışı
bırakmak mümkündür.
HTML İÇİNDE BELGE TÜRÜ TANIMLAMA
HTML belgeleri Windows'ta biraz daha fazla özelleştirilebilmektedir. Yukarıda
anlatılan belge-klasör bağlantısı dışında, belge içinde Windows'un anlayacağı
şekilde tür tanımlaması yapılması sözkonusudur.
Head bölgesinde oluşturulacak ProgID adlı bir Meta bilgisi belgenin türünü
tanıtmaktadır.
<head>
...
<meta name=ProgId content=Excel.sheet>
...
</head>
ProgID adlı Meta bilgisinin Content özniteliği belgenin türünü belirtmektedir.
Buraya "Excel.sheet" değeri atandığında belge Excel dosyasıymış gibi
görüntülenir.
Zaten Excel ve diğer Office programları, web sayfası olarak kaydettikleri
belgelere bu bilgiyi eklemektedirler. Bu durumda farklı HTML belgeleri için
düzenleme komutu (edit) verildiğinde Frontpage gibi bir HTML düzenleyici
açılmazken ilgili Office uygulaması açılır.
Belge dosyasının simgesi de uygulamaya göre farklı şekilde gösterilir.

Üstteki resimde tüm dosyaların uzantısı HTML olmasına rağmen herbiri için farklı
simgeler gösterilmektedir. Bu, tabii ki Office türleri dışındaki belge türleri
için de geçerlidir. Resimde “CHIP” simgeli bir html belgesi görüyorsunuz zaten.
KENDİ BELGE TÜRÜNÜZÜ TANIMLAYIN
Bir belge türü tanımlamak, yalnızca kayıt defterinde bir yığın ayar yapmayı
gerektirir. Belge türü için ne kadar çok özelleştirme varsa, yapılması gereken
ayarlar da o kadar çoktur.
En basit belge türü tanımlaması, geçerli uzantıdaki bir dosyanın çift
tıklatılarak açılacağı programı belirleyerek yapılabilir. Windows Gezgini'nde
Tools / Folder Options / File Types (Dosya Türleri) bölümünde yeni bir dosya
türü, uzantı belirtilerek tanımlanabilir ve bu uzantıya sahip dosyaların hangi
programla açılacağı belirlenebilir.
Belge türü oluşturulurken kayıt defterine birtakım kayıtlar girilir. Bizim
belirlediğimiz ".chip" uzantısı için kayıt defterinde aşağıdaki kayıtları
oluşturduk.
[HKEY_CLASSES_ROOT\.chip]
@="chipdosya"
"InfoTip"="Chip deneme dosyası"
[HKEY_CLASSES_ROOT\ChipDosya]
[HKEY_CLASSES_ROOT\ChipDosya\Curver]
@="ChipDosya.1"
[HKEY_CLASSES_ROOT\ChipDosya.1]
@="Chip uzantılı deneme dosyası"
[HKEY_CLASSES_ROOT\ChipDosya.1\DefaultIcon]
@="c:\\chipdosya.ico"
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell]
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell\Open]
@="&Aç"
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell\Open\Command]
@="notepad.exe %1"

HKCR altında temel olarak üç anahtar oluşturmak yeterlidir. Bunlar ".chip",
"ChipDosya" ve bunun geçerli sürüm bilgisini ifade eden "ChipDosya.1"
anahtarlarıdır.
Chip uzantılı bir dosyaya erişildiğinde kayıt defterindeki .chip anahtarının
geçerli değerindeki "chipdosya" bilgisi elde edilir. Sonra bu anahtara ulaşılır
ve Curver altında belirtilen yeni anahtara gidilir.
Bilgisayarda yüklü Com nesnelerinin farklı sürümlerine ulaşmak için nesne adının
sonunda sürüm bilgisi de kullanılabilmektedir. Örneğin ADO'nun yüklü olan farklı
sürümlerine erişmek için, CreateObject komutu ile "ADODB.Connection.2.7" ya da "
ADODB.Connection.2.5" nesneleri oluşturulabilir ve bunların kullanımları tabii
ki birbirinden farklıdır. Ama Com mimarisinin getirdiği kolaylıklardan biri her
yeni sürüm için kodları değiştirmek yerine daha genel isimler kullanmaktır. Bu
da ancak Curver (current version) gibi geçerli sürümü işaret eden bir anahtar
alanı oluşturmakla mümkündür. Şu durumda bu bilgi genellikle son yüklenen sürümü
işaret eder. Bizim bilgisayarımızda bu "ADODB.Connection.2.7" şeklindedir ve her
"ADODB.Connection" oluşturma isteğinde aslında bu anahtara yönelinir.
ADO'nun olası 2.8 sürümü yüklendiğinde ise CurVer bilgisi herhalde
"ADODB.Connection.2.8"den başkası olmayacaktır. Böylelikle ADO'nun kurulu tüm
sürümlerine ulaşılabilmesinin yanında genel isim kullanıldığında da son sürüme
erişilir. Yani CreateObject(“ADODB.connection”) şeklinde genel bir isim ile Com
bileşeninin çağrılması sağlanmış olur.
Chip uzantılı dosyalarımız için de benzeri sözkonusudur. Chip uzantılı bir
dosyaya ulaşıldığında son olarak "ChipDosya.1" anahtarına kadar gelinir. Burada
dosya türünün Windows Gezgini'nde görüntülenecek açıklaması, dosya simgesinin
konumu, sağ tuş menüsünde yer alacak komut listesi ve dosyanın çift
tıklatıldığında hangi program ile açılacağı gibi bilgiler yer alır.
Dosya adı, bir programla ilişkilendirilirken program dosyasının yoluna
genellikle " %1" eklenir. Bu, dosyanın yolunu programa göndermektedir. Dosyayı
gerçekten açma işlemini başarmak, ilişkili programın sorumluluğundadır.
HTML belgelerinde bildirilen belge türleri için ise ek bir dosya türü
tanımlanmalıdır. Örneğin Excel belgeleri için .xlshtml uzantılı bir dosya türü
oluşturulmuştur. Bu türün tanımlandığı yerde Excelhtmlfile başlığı işaret
edilir. Excelhtml altında ise dosyanın ne ile ve nasıl açılması hakkında
bilgiler ve simgenin alınacağı adres yer alır.
Bu kadarı, HTML içinde türü bildirilen belgelerin gerçekten tanınması için
yeterli değildir. Excel sayfalarını ifade eden Excel.Sheet anahtarının altında
"HTML Handler" başlıklı bir alt anahtar daha bulunur (HKCR\Excel.Sheet.8\HTML
Handler). Burada HTML dosyasının başka bir dosya uzantısına sahipmiş gibi
davranmasını sağlayacak tanımlamalar yapılmıştır. Örneğin Icon anahtarında html
belgesinin olası dosya uzantılarına karşılık simgenin yüklenmesinde belirleyici
gerçek uzantılar bildirilmiştir.
[HKEY_CLASSES_ROOT\.chiphtml]
@="ChipHTMLDosya"
[HKEY_CLASSES_ROOT\.chiphtml\ChipHTMLDosya]
[HKEY_CLASSES_ROOT\ChipHTMLDosya]
@="Chip HTML Dosyası"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\DefaultIcon]
@="c:\\chiphtml.ico"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell]
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell\Open]
@="&Aç"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell\Open\Command]
@="notepad.exe %1"
[HKEY_CLASSES_ROOT\ChipDosya\HTML Handler]
[HKEY_CLASSES_ROOT\ChipDosya\HTML Handler\Icon]
@=".chiphtml"
".htm"=".chiphtml"
".html"=".chiphtml"
ProgID bilgisinin "ChipDosya" şeklinde olduğu HTML belgeleri için, ".htm" ve
".html" uzantıları kullanıldığında belge aslında ".chiphtml" dosyasıymış gibi
davranacaktır.

<head>
...
<meta name=ProgId content=ChipDosya>
...
</head>
ASP'DE ÖZEL BELGE TÜRÜ TANIMLAMA
ASP sayfalarından yüklenen belgeler için de özelleştirmeler yapılabilmektedir.
[HKCR\MIME\Database\Content Type] anahtarı altında, ASP'deki
Response.ContentType ile kullanılabilecek geçerli tüm belge türleri yer alır.
Örneğin XML belgeleri için response.contenttype="text/xml" komutunun doğru
çalışması buraya bağlıdır.
Chip dosyamız için de buraya gerekli bilgileri ekleyerek ASP'deki
response.contenttype="text/chip" gibi bir satırın doğru çalışmasını ve yüklenen
belgenin .chip uzantılı bir dosya imiş gibi davranmasını sağlayabiliriz.
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/chip]
"Extension"=".chip"
| .chip |
Dosya uzantısı |
| ChipDosya |
Belge türü tanımlaması |
| ChipDosya.1 |
Belgenin sürümünü ifade eden belge türü tanımlaması |
| .chiphtml |
HTML biçimindeki dosyanın uzantısı |
| ChipHTMLDosya |
HTML biçimindeki dosya türü adı |
Dosya türlerine özel simgeler göstermek için DefaultIcon bilgisine geçerli
bir simge adresi atamak yeterlidir. Bu ico uzantılı bir simge dosyasının adresi
olabileceği gibi, "c:\...\resimler.exe, 15" şeklinde resim kaynağı içeren bir
uygulama dosyasındaki kaynak bölgesinin adresi de olabilir.
DOSYALAR:
excel_belge.asp.txt
word_belge.asp.txt
toplanti.ics.txt
toplanti.asp.txt
chip.reg.txt
chipdosya.ico
chiphtml.ico
Serkan ŞAHİNOĞLU
(Chip Dergisi,
Ekim 2002)
|