« October 2007 | صÙ?ØÙ‡ اصلی | December 2007 »
ايجاد Ù…ØØªÙˆØ§ÙŠ Ø¯Ø§ÙŠÙ†Ø§Ù…ÙŠÙƒ XML با ليستي از Item هاNovember 28, 2007 12:52 PM
در ادامه مطلب قبلي باز هم به توليد XML با Ù…ØØªÙˆØ§ÙŠ Ø¯Ø§ÙŠÙ†Ø§Ù…ÙŠÙƒ مي پردازيم. اين بار Ù…ØØªÙˆØ§ÙŠ ï¿½?ايل XML را توسط ليست آيتم هايي كه در يك Java bean تعري�? شده، ايجاد مي كنيم. براي اين كار دو كلاس به نام هاي Item Ùˆ Inventory ايجاد مي نماييم.
Ù…ØØªÙˆØ§ÙŠ ï¿½?ايل Item.java چنين است:
Ù…ØØªÙˆØ§ÙŠ ï¿½?ايل Item.java چنين است:
package beans;
public class Item implements java.io.Serializable {
private String name;
private float price;
public Item(String name , float price) {
this.name = name;
this.price = price;
}
public String getName() {return name;}
public float getPrice() {return price;}
}
public class Item implements java.io.Serializable {
private String name;
private float price;
public Item(String name , float price) {
this.name = name;
this.price = price;
}
public String getName() {return name;}
public float getPrice() {return price;}
}
Ù…ØØªÙˆØ§ÙŠ ï¿½?ايل Inventory.java چنين است:
package beans;
import java.util.Iterator;
import java.util.Vector;
public class Inventory implements java.io.Serializable {
private Vector items = new Vector();
public Inventory() {
items.addElement(new Item("LCD",(float)200000.0));
items.addElement(new Item("Laptop",(float)1000000.0));
}
public Iterator getItems() {
return items.iterator();
}
}
import java.util.Iterator;
import java.util.Vector;
public class Inventory implements java.io.Serializable {
private Vector items = new Vector();
public Inventory() {
items.addElement(new Item("LCD",(float)200000.0));
items.addElement(new Item("Laptop",(float)1000000.0));
}
public Iterator getItems() {
return items.iterator();
}
}
توجه كنيد كه در اينجا Ù…ØØªÙˆÙŠØ§Øª ليست items از كلاس Inventory بصورت ثابت مقداردهي شده اند. اين ليست مي تواند از روي يك منبع داده قابل تغيير مقداردهي شود.
سرانجام مشخصات �?ايل inventory.jsp بدين صورت است:
سرانجام مشخصات �?ايل inventory.jsp بدين صورت است:
<%@page contentType="text/xml"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="beans.Inventory,beans.Item" %>
<jsp:useBean id="inventory" class="beans.Inventory" scope="page" />
<%
java.util.Iterator it = inventory.getItems();
Item item = null;
%>
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<% while (it.hasNext()) {
item = (Item)it.next(); %>
<item>
<name><%= item.getName() %></name>
<price><%= item.getPrice() %></price>
</item>
<% } %>
</inventory>
<%@page pageEncoding="UTF-8"%>
<%@ page import="beans.Inventory,beans.Item" %>
<jsp:useBean id="inventory" class="beans.Inventory" scope="page" />
<%
java.util.Iterator it = inventory.getItems();
Item item = null;
%>
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<% while (it.hasNext()) {
item = (Item)it.next(); %>
<item>
<name><%= item.getName() %></name>
<price><%= item.getPrice() %></price>
</item>
<% } %>
</inventory>
با اجراي اين �?ايل jsp روي Browser خود يك ساختار XML را مشاهده خواهيد نمود كه Ù…ØØªÙˆÙŠØ§Øª آن، ليست همه آيتم هاي تعري�? شده در كلاس Inventory است.
منبع : �?صل 11 كتاب Advanced JavaServer Pages
منبع : �?صل 11 كتاب Advanced JavaServer Pages
mahyar_ev | 12:52 PM | Comment(s)(0)
ساخت XML با Ù…ØØªÙˆØ§ÛŒ داینامیک توسط jspساختار استاندارد Ùˆ شناخته شده تر ÙŠÚ© �?ايل jsp مشابه ÙŠÚ© �?ايل html است Ú©Ù‡ در ميان تگ هاي آن مي توان تگ هاي jsp را نيز به کار برد. مثال:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP Page in HTML format</title>
</head>
<body>
<% out.println("This is a jsp in html format."); %>
</body>
</html>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP Page in HTML format</title>
</head>
<body>
<% out.println("This is a jsp in html format."); %>
</body>
</html>
اما يک �?ايل jsp مي تواند �?رمت XML نيز داشته باشد. به اين ترتيب مي توان خروجي XML دايناميک توليد نمود. مثال:
<%@page contentType="text/xml"%>
<%@page pageEncoding="UTF-8"%>
<?xml version="1.0" encoding="UTF-8"?>
<documnet>
<date>
<%= new java.util.Date() %>
</date>
</documnet>
<%@page pageEncoding="UTF-8"%>
<?xml version="1.0" encoding="UTF-8"?>
<documnet>
<date>
<%= new java.util.Date() %>
</date>
</documnet>
نکته 1: توجه کنيد Ú©Ù‡ در هر دو ØØ§Ù„ت پسوند �?ايل بايد jsp باشد.
نکته 2: به ت�?اوت مقدار contentType در دو مثال دقت کنيد.
نکته 3: خروجي مثال اول در Browser ص�?ØÙ‡ اي است Ú©Ù‡ تنها عبارت "JSP Page in HTML format" در آن نوشته شده. اما خروجي دوم به �?رمت XML است Ú©Ù‡ مقدار عنصر date آن تاريخ جاري سيستم است.
نکته 2: به ت�?اوت مقدار contentType در دو مثال دقت کنيد.
نکته 3: خروجي مثال اول در Browser ص�?ØÙ‡ اي است Ú©Ù‡ تنها عبارت "JSP Page in HTML format" در آن نوشته شده. اما خروجي دوم به �?رمت XML است Ú©Ù‡ مقدار عنصر date آن تاريخ جاري سيستم است.
mahyar_ev | 10:01 AM | Comment(s)(0)
نمايش XML در HTMLNovember 19, 2007 01:21 PM
چندي پيش در كامنت هاي مطلبي مربوط به XML دوست عزيزم سوالي Ù…Ø·Ø±Ø Ù†Ù…ÙˆØ¯ كه آن زمان من از روي ناداني جوابي دادم كه گرچه غلط نبود، اما جواب سوال او هم نبود. سوال اين بود كه "چطور مي توان يك �?ايل XML را در ص�?ØÙ‡ html نشان داد". باز ØÙŠÙ† وب گردي هايم به مثالي برخوردم كه گمان مي كنم جواب سوال اين دوست عزيزم باشد.
�?رض كنيد Ù…ØØªÙˆÙŠØ§Øª �?ايل Products.xml چنين باشد:
�?رض كنيد Ù…ØØªÙˆÙŠØ§Øª �?ايل Products.xml چنين باشد:
<?xml version="1.0"?>
<Products>
<Item>
<Name>Coffee Cup Warmer</Name>
<Number>0001</Number>
<Description>See Name</Description>
<Price>15.00</Price>
</Item>
<Item>
<Name>T-Shirt with Wacky NorEaster Logo Large</Name>
<Number>0004</Number>
<Description>See Name</Description>
<Price>21.00</Price>
</Item>
<Item>
<Name>Computer For Linux</Name>
<Number>0009</Number>
<Description>With Linux Installed</Description>
<Price>250.00</Price>
</Item>
<Item>
<Name>Flat LCD Display 14"</Name>
<Number>0010</Number>
<Description>Recommended for #0009</Description>
<Price>387.00</Price>
</Item>
</Products>
<Products>
<Item>
<Name>Coffee Cup Warmer</Name>
<Number>0001</Number>
<Description>See Name</Description>
<Price>15.00</Price>
</Item>
<Item>
<Name>T-Shirt with Wacky NorEaster Logo Large</Name>
<Number>0004</Number>
<Description>See Name</Description>
<Price>21.00</Price>
</Item>
<Item>
<Name>Computer For Linux</Name>
<Number>0009</Number>
<Description>With Linux Installed</Description>
<Price>250.00</Price>
</Item>
<Item>
<Name>Flat LCD Display 14"</Name>
<Number>0010</Number>
<Description>Recommended for #0009</Description>
<Price>387.00</Price>
</Item>
</Products>
با دستورات html زير مي توان Ù…ØØªÙˆÙŠØ§Øª اين �?ايل XML را بصورت جدولي نمايش داد:
<HTML>
<HEAD>
<TITLE>Show XML In Your HTML </TITLE>
</HEAD>
<BODY>
<XML ID="MyProducts" SRC="Products.xml"></XML>
<TABLE ID="ProdTable" DATASRC="#MyProducts" BORDER="1">
<THEAD>
<TH>
Item Name/Description
</TH>
<TH>
Item Number
</TH>
<TH>
Price
</TH>
</THEAD>
<TR>
<TD>
<B><Span DATAFLD="Name"></SPAN></B><BR>
<SPAN DATAFLD="Description"></SPAN>
</TD>
<TD>
<SPAN DATAFLD="Number"></SPAN>
</TD>
<TD>
<SPAN DATAFLD="Price"></SPAN>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
<HEAD>
<TITLE>Show XML In Your HTML </TITLE>
</HEAD>
<BODY>
<XML ID="MyProducts" SRC="Products.xml"></XML>
<TABLE ID="ProdTable" DATASRC="#MyProducts" BORDER="1">
<THEAD>
<TH>
Item Name/Description
</TH>
<TH>
Item Number
</TH>
<TH>
Price
</TH>
</THEAD>
<TR>
<TD>
<B><Span DATAFLD="Name"></SPAN></B><BR>
<SPAN DATAFLD="Description"></SPAN>
</TD>
<TD>
<SPAN DATAFLD="Number"></SPAN>
</TD>
<TD>
<SPAN DATAFLD="Price"></SPAN>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
اصل مثال را مي توانيد اينجا ببينيد.
اميدوارم اين بار ديگر پاسخ سوال را درست داده باشم.
اميدوارم اين بار ديگر پاسخ سوال را درست داده باشم.
mahyar_ev | 01:21 PM | Comment(s)(2)
نامگذاري Javaقبلا جايي خوانده بودم كه نام java از ØØ±Ù? اول نام سه Ù†Ù?ر از اÙ?راد اصلي كه روي آن كار كرده اند، گرÙ?ته شده. همينطور اينكه انتخاب Ù?نجان قهوه بعنوان نماد آن از اين جهت است كه اين نام گذاري در يك كاÙ?ÙŠ شاپ انجام شده. اما در وب گردي هايم در سايت sun به روايت ديگري در اين باره برخوردم. با توجه به اينكه اين مطلب در سايت sun Ú¯Ù?ته شده، قطعا روايت دوم صØÙŠØ است. ترجمه روايت اين است:
نام Java در يكي از چندين جلسه brainstorming برگزار شده توسط تيم نرم اÙ?زاري جاوا انتخاب گرديد. هدÙ? ما رسيدن به نامي بود كه نمايانگر ذات اين تكنولوژي Ùˆ پويايي، سرعت، سرزندگي Ùˆ ساير ويژگي هاي اين زبان باشد. Java از ميان پيشنهادهاي بسيار ارائه شده، انتخاب گرديد. Java يك سرنام (acronym) نيست. بلكه اشاره اي است به نوشيدني داغ Ùˆ خوشبويي كه برنامه نويسان بسيار دوست دارند آن را بنوشند.
Ù¾.Ù†. يكي از معاني Java در Ø§ØµØ·Ù„Ø§Ø Ø¹Ø§Ù…ÙŠØ§Ù†Ù‡ØŒ قهوه است.
نام Java در يكي از چندين جلسه brainstorming برگزار شده توسط تيم نرم اÙ?زاري جاوا انتخاب گرديد. هدÙ? ما رسيدن به نامي بود كه نمايانگر ذات اين تكنولوژي Ùˆ پويايي، سرعت، سرزندگي Ùˆ ساير ويژگي هاي اين زبان باشد. Java از ميان پيشنهادهاي بسيار ارائه شده، انتخاب گرديد. Java يك سرنام (acronym) نيست. بلكه اشاره اي است به نوشيدني داغ Ùˆ خوشبويي كه برنامه نويسان بسيار دوست دارند آن را بنوشند.
Ù¾.Ù†. يكي از معاني Java در Ø§ØµØ·Ù„Ø§Ø Ø¹Ø§Ù…ÙŠØ§Ù†Ù‡ØŒ قهوه است.
mahyar_ev | 11:21 AM | Comment(s)(0)
يك كد javascript كوچكNovember 14, 2007 11:51 AM
براي مطالبي كه در اين وبلاگ مي نويسم ØªØ±Ø¬ÙŠØ Ù…ÙŠ دهم كه خودم Ù?رمت html اش را درست كنم، تا اينكه اين كار را به engine خود اديتور بسپارم. با توجه به اينكه مطالبم اغلب تركيب بخش هاي rigt to left Ùˆ left to right است،‌هميشه بعد از آماده سازي مطالب وقت زيادي از من براي اين كار Ùˆ Ù?رمت بندي html گرÙ?ته مي شود. سخت ترين قسمت كار اين وبلاگ برايم همين است.
براي رهايي از اين كابوس يك javascript كوچك نوشته ام كه كارم را خيلي Ø±Ø§ØØª مي كند Ùˆ بخش زيادي از كار را اتوماتيك انجام مي دهد. source اش را اينجا مي گذارم. شايد به درد كس ديگري هم خورد. بنا به سليقه خود مي توانيد آن را customize كنيد.
براي رهايي از اين كابوس يك javascript كوچك نوشته ام كه كارم را خيلي Ø±Ø§ØØª مي كند Ùˆ بخش زيادي از كار را اتوماتيك انجام مي دهد. source اش را اينجا مي گذارم. شايد به درد كس ديگري هم خورد. بنا به سليقه خود مي توانيد آن را customize كنيد.
mahyar_ev | 11:51 AM | Comment(s)(1)
ادامه مروري بر DTDNovember 4, 2007 03:42 PM
Element ها در DTD
سينتكس Elements
در DTD با سينتكس زير element ها تعري�? مي شوند:
سينتكس Elements
در DTD با سينتكس زير element ها تعري�? مي شوند:
<!ELEMENT element-name category>
يا
<!ELEMENT element-name (element-content)>
يا
<!ELEMENT element-name (element-content)>
Empty Elements
در اين نوع Element ها category برابر EMPTY مقداردهي مي شود:
در اين نوع Element ها category برابر EMPTY مقداردهي مي شود:
<!ELEMENT element-name EMPTY>
مثال:
<!ELEMENT br EMPTY>
مثال:
<!ELEMENT br EMPTY>
در XML با توجه به اين DTD تعري�? br بايد چنين باشد:
<br />
Element هاي با Parsed Character Data
<!ELEMENT element-name (#PCDATA)>
Element هاي با هر Ù…ØØªÙˆØ§
مي توانند هر تركيبي از داده هاي قابل پارس را بپذيرند:
مي توانند هر تركيبي از داده هاي قابل پارس را بپذيرند:
<!ELEMENT element-name ANY>
Element هاي داراي �?رزند
<!ELEMENT element-name (child1)>
يا
<!ELEMENT element-name (child1,child2,…)>
مثال:
<!ELEMENT note (to,from,heading,body)>
يا
<!ELEMENT element-name (child1,child2,…)>
مثال:
<!ELEMENT note (to,from,heading,body)>
�?رزندان به همان ترتيبي كه در تعري�? آمده اند بايد در سند XML ظاهر شوند.
�?رزندان خود مي توانند داراي �?رزند باشند.
تعداد element هاي ممكن
در مثال هاي ذكر شده تا به ØØ§Ù„ تنها مي توان يك عدد از element را در XML قرار داد.
اگر بخواهيم كه تعداد تكرار يك element را مشخص نماييم از اين �?رمت ها است�?اده مي نماييم:
+ براي يك يا چند ،‌مثل
�?رزندان خود مي توانند داراي �?رزند باشند.
تعداد element هاي ممكن
در مثال هاي ذكر شده تا به ØØ§Ù„ تنها مي توان يك عدد از element را در XML قرار داد.
اگر بخواهيم كه تعداد تكرار يك element را مشخص نماييم از اين �?رمت ها است�?اده مي نماييم:
+ براي يك يا چند ،‌مثل
<!ELEMENT element-name (child-name+)>
* براي ص�?ر يا چند ، مثل
<!ELEMENT element-name (child-name*)>
? براي ص�?ر يا يك ، مثل
<!ELEMENT element-name (child-name?)>
Ù…ØØªÙˆØ§ÙŠ Ø¯Ùˆ ØØ§Ù„تي
تعري�? زير اشاره دارد به اينكه note element داراي يك to، يك from و يك header است، به علاوه يكي از عناصر message يا body (يا message يا body)
تعري�? زير اشاره دارد به اينكه note element داراي يك to، يك from و يك header است، به علاوه يكي از عناصر message يا body (يا message يا body)
<!ELEMENT note (to,from,header,(message|body))>
Ù…ØØªÙˆØ§ÙŠ ØªØ±ÙƒÙŠØ¨ÙŠ
تعري�? زير اشاره دارد به اينكه note element داراي ص�?ر يا چند تكرار از Parsed Character data، to، from، header يا message است.
تعري�? زير اشاره دارد به اينكه note element داراي ص�?ر يا چند تكرار از Parsed Character data، to، from، header يا message است.
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Attribute ها در DTD
در DTD تعري�? attribute ها با عبارت ATTLIST انجام مي شود. سينتكس آن بدين شكل است:
در DTD تعري�? attribute ها با عبارت ATTLIST انجام مي شود. سينتكس آن بدين شكل است:
<!ATTLIST element-name attribute-name attribute-type default-value>
مثل
<!ATTLIST payment type CDATA "check">
مثل
<!ATTLIST payment type CDATA "check">
كه در XML بدين شكل بايد پياده شود:
<payment type="check" />
لازم به ذكر است كه لازم نيست در سند XML ØØªÙ…ا مقدار attribute را مساوي با defalt-value قرار دهيم. بلكه هر مقدار معتبري مطابق با type مشخص شده مي تواند باشد. ولي اگر مقداري به آن نسبت داده نشده باشد، مقدار آن برابر با default-value مي گردد.
به جاي default-value و نه همراه با آن، از سه عبارت REQUIRED# و IMPLIED# و FIXED value# هم مي توانيد است�?اده كنيد. در ادامه اين سه مورد معر�?ي مي شوند.
REQUIRED#
عبارت #REQUIRED مشخص مي كند كه attribute وجودش در عنصر مربوطه الزامي است. مثل
به جاي default-value و نه همراه با آن، از سه عبارت REQUIRED# و IMPLIED# و FIXED value# هم مي توانيد است�?اده كنيد. در ادامه اين سه مورد معر�?ي مي شوند.
REQUIRED#
عبارت #REQUIRED مشخص مي كند كه attribute وجودش در عنصر مربوطه الزامي است. مثل
<!ATTLIST person number CDATA #REQUIRED>
از REQUIRED# وقتي است�?اده نماييد كه مقداري بعنوان مقدار پيش �?رض نداريد، اما در عين ØØ§Ù„ مي خواهيد كه ØØªÙ…ا اين attribute وجود داشته باشد.
IMPLIED#
از IMPLIED# وقتي است�?اده كنيد كه مقداري بعنوان default نداريد و همچنين الزامي هم در وجود اين attribute وجود ندارد. مثال:
IMPLIED#
از IMPLIED# وقتي است�?اده كنيد كه مقداري بعنوان default نداريد و همچنين الزامي هم در وجود اين attribute وجود ندارد. مثال:
<!ATTLIST contact fax CDATA #IMPLIED>
FIXED value#
از اين عبارت وقتي است�?اده كنيد كه مي خواهيد attribute يك مقدار مشخص داشته باشد و نويسنده XML نتواند چيز ديگري به جاي آن بنويسد. اگر نويسنده چيز ديگري بنويسد، پارسر XML خطا برميگرداند. مثال:
از اين عبارت وقتي است�?اده كنيد كه مي خواهيد attribute يك مقدار مشخص داشته باشد و نويسنده XML نتواند چيز ديگري به جاي آن بنويسد. اگر نويسنده چيز ديگري بنويسد، پارسر XML خطا برميگرداند. مثال:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Attribute هاي داراي مقداير Enumerated
وقتي كه attribute مقادير مشخصي را مي تواند بپذيرد، اين مقادير در قسمت attribute-type تعري�? مي شوند. مثال:
وقتي كه attribute مقادير مشخصي را مي تواند بپذيرد، اين مقادير در قسمت attribute-type تعري�? مي شوند. مثال:
<!ATTLIST payment type (check|cash) "cash">
لازم به ذكر است كه attribute-type علاوه بر CDATAو enumerated عبارات ديگري را نيز مي تواند بپذيرد. از جمله ID، IDREF، IDREFS، NMTOKEN، NMTOKENS، ENTITY، ENTITIES، NOTATION و xml. براي آشنايي بيشتر با اين موارد به ساير منابع موجود در ارتباط با DTD از جمله مرجع اين نوشته رجوع نماييد:
ENTITY ها در DTD
Entity ها متغيرهايي هستند كه بعنوان shortcut براي برخي متون يا كاراكترهاي ديگر به كار مي روند. Entity به دو صورت internal و external قابل تعري�? است.
تعري�? Entity بصورت internal
سينتكس:
ENTITY ها در DTD
Entity ها متغيرهايي هستند كه بعنوان shortcut براي برخي متون يا كاراكترهاي ديگر به كار مي روند. Entity به دو صورت internal و external قابل تعري�? است.
تعري�? Entity بصورت internal
سينتكس:
<!ENTITY entity-name "entity-value">
مثال:
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
مثال:
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
Ùˆ Ù†ØÙˆÙ‡ است�?اده آنها در XML بدين صورت است:
<author>&writer;©right;</author>
توجه كنيد كه قبل از نام entity كاراكتر "&" و بعد از آن ";" مي آيد.
تعري�? Entity بصورت external
سينتكس:
تعري�? Entity بصورت external
سينتكس:
<!ENTITY entity-name SYSTEM "filename/URL">
مثال:
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">
مثال:
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">
Ù†ØÙˆÙ‡ است�?اده از external entity مانند internal است.
mahyar_ev | 03:42 PM | Comment(s)(0)
مروري بر DTDNovember 3, 2007 02:26 PM
ادامه مروري بر XML را با DTD پي مي گيريم.
DTD وسيله اي براي تعريÙ? بلاك هاي معتبر در سند XML است.
يك DTD مي تواند داخل خود سند XML تعريÙ? شود يا بصورت external از آن باشد.
Internal DTD Declaration:
در اين ØØ§Ù„ت در قسمت DOCTYPE با سينتكس زير تعريÙ? مي شود:
DTD وسيله اي براي تعريÙ? بلاك هاي معتبر در سند XML است.
يك DTD مي تواند داخل خود سند XML تعريÙ? شود يا بصورت external از آن باشد.
Internal DTD Declaration:
در اين ØØ§Ù„ت در قسمت DOCTYPE با سينتكس زير تعريÙ? مي شود:
<!DOCTYPE root-element [element-declarations]>
مثال:
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>you</to>
<from>me</from>
<heading>Reminder</heading>
<body>Don't forget</body>
</note>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>you</to>
<from>me</from>
<heading>Reminder</heading>
<body>Don't forget</body>
</note>
در اين مثال DOCTYPE note مشخص مي كند كه عنصر root سند note است.
External DTD Declaration:
در قسمت DOCTYPE با سينتكس زير تعريÙ? مي شود:
External DTD Declaration:
در قسمت DOCTYPE با سينتكس زير تعريÙ? مي شود:
<!DOCTYPE root-element SYSTEM "filename">
مثال بالا را به صورت external مي بينيم:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>you</to>
<from>me</from>
<heading>Reminder</heading>
<body>Don't forget</body>
</note>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>you</to>
<from>me</from>
<heading>Reminder</heading>
<body>Don't forget</body>
</note>
Ùˆ Ù…ØØªÙˆØ§ÙŠ Ù?ايل note.dtd بدين صورت است:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
دلايل استÙ?اده از DTD
* هر DTD Ù?رمت Ù?ايل XML مربوط به خود را توصيÙ? مي كند.
* اÙ?راد Ùˆ گروه هاي مختلÙ? مي توانند Ù?رمت DTD را بصورت استاندارد براي تبادلات در نظر بگيرند Ùˆ Ù?ايل هاي XML خود را بر اساس آن توليد نمايند.
* application ها نيز مي توانند براي اعتبارسنجي Ù?ايل XML از DTD ها استÙ?اده كنند.
از ديدگاه DTD هر سند XML يا HTML از اجزاي زير تشكيل شده است:
* Elements
* Attributes
* Entities
* PCDATA
* CDATA
در ادامه هر كدام ØªØ´Ø±ÙŠØ Ù…ÙŠ گردند:
Elements
Element ها بلاك هاي اصلي اسناد XML يا HTML هستند. موارد زير مثال هايي از element ها هستند:
* هر DTD Ù?رمت Ù?ايل XML مربوط به خود را توصيÙ? مي كند.
* اÙ?راد Ùˆ گروه هاي مختلÙ? مي توانند Ù?رمت DTD را بصورت استاندارد براي تبادلات در نظر بگيرند Ùˆ Ù?ايل هاي XML خود را بر اساس آن توليد نمايند.
* application ها نيز مي توانند براي اعتبارسنجي Ù?ايل XML از DTD ها استÙ?اده كنند.
از ديدگاه DTD هر سند XML يا HTML از اجزاي زير تشكيل شده است:
* Elements
* Attributes
* Entities
* PCDATA
* CDATA
در ادامه هر كدام ØªØ´Ø±ÙŠØ Ù…ÙŠ گردند:
Elements
Element ها بلاك هاي اصلي اسناد XML يا HTML هستند. موارد زير مثال هايي از element ها هستند:
<body>some text</body>
<message>some text</message>
<message>some text</message>
Attributes
عبارتند از ØªÙˆØ¶ÙŠØØ§Øª اضاÙ?ÙŠ درباره element ها. در مثال زير img همان element است Ùˆ src يك attribute آن. از آنجا كه خود element Ù…ØØªÙˆØ§ÙŠØ´ empty است با "/" بسته مي شود.
عبارتند از ØªÙˆØ¶ÙŠØØ§Øª اضاÙ?ÙŠ درباره element ها. در مثال زير img همان element است Ùˆ src يك attribute آن. از آنجا كه خود element Ù…ØØªÙˆØ§ÙŠØ´ empty است با "/" بسته مي شود.
<img src="computer.gif" />
Entities
برخي كاراكترها معني خاصي در XML دارند مثل < كه علامت شروع تگ XML است. مشابه آن در HTML عبارت ";nbsp&" است كه به "no-breaking-space" اشاره دارد. ليست آنها در XML بدين Ø´Ø±Ø Ø§Ø³Øª:
برخي كاراكترها معني خاصي در XML دارند مثل < كه علامت شروع تگ XML است. مشابه آن در HTML عبارت ";nbsp&" است كه به "no-breaking-space" اشاره دارد. ليست آنها در XML بدين Ø´Ø±Ø Ø§Ø³Øª:
< <
> >
& &
" "
' '
> >
& &
" "
' '
PCDATA
PCDATAمخÙ?Ù? Parsed Character Data متني است كه توسط Parser قابل parse است.
CDATA
CDATA مخÙ?Ù? Character Data متني است كه توسط parserØŒ parse نمي شود.
PCDATAمخÙ?Ù? Parsed Character Data متني است كه توسط Parser قابل parse است.
CDATA
CDATA مخÙ?Ù? Character Data متني است كه توسط parserØŒ parse نمي شود.