جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
XPath چيست ؟
-(16 Body) 
XPath چيست ؟
Visitor 2876
Category: دنياي فن آوري
XML ، بهمراه خود مجموعه اي از ساير تکنولوژي ها را ايجاد کرده است . XSL يکي از مهمترين تکنولوژي هاي مرتبط با XML بوده که عموما" به سه تکنولوژي ديگر اشاره مي نمايد :
• XSLT : زباني براي تبديل ساختار يک سند XML
• XPath : زباني براي آدرس دهي بخش هاي متفاوت يک سند XML
• XSL-FO : زباني بمنظور فرمت دهي يک سند XML
XPath يکي از تکنولوژي هاي مرتبط با XML بوده که ارتباط بسيار نزديکي با XSLT دارد . بنابراين لازم است قبل از آشنائي با XPath ،نگاهي سريع به تکنولوژي XSLT داشته و از اين رهگذر جايگاه XPath را تبين نمائيم .XSLT زباني مبتني بر قوانين بوده و با ساير زبان هاي برنامه نويسي تفاوت دارد. XSLT مبتني بر مجموعه اي از تمپليت ها است که هر يک بر اساس قوانين تعريف شده شکل واقعي خود را پيدا خواهند کرد .در حقيقت يک تمپليت با اتکاء بر قوانين تعريف شده، نحوه پردازش سندهاي XML را مشخص مي نمايد.به عبارت ديگر يک Stylesheet ، نحوه ايجاد خروجي مورد نظر در زمان مواجه شدن با يک الگو در سند XML را مشخص مي نمايد. در XSLT بر اساس مجموعه اي از قوانين، تمپليت ( تمپليت ها ) تعريف و در زمان تبديل يک سند XML از قوانين موجود در XSLT براي يافتن يک الگو در سند XML استفاده مي گردد . در صورتيکه الگوي مورد نظر در سند XML پيدا گردد ، واکنش هاي پيش بيني شده ، انجام و خروجي مورد نظر ايجاد مي گردد. يک StyleSheet مي تواند نحوه برخورد با يک المان خاص در زمان عمليات تبديل را مشخص و تعريف نمائيد. مثلا" در صورتيکه الماني با نام NAME در سند XML پيدا گرديد، مي توان واکنش هاي مورد نظر را بمنظور برخورد با واقعيت موجود مشخص کرد. گرامر تمپليت در اين حالت بصورت زير خواهد بود :

<xsl:template match="NAME">
...
</xsl:template>

مثال: استفاده از XSLT بمنظور تبديل يک سند XML

در اين مثال با استفاده از XSLT يک سند XML به Html تبديل و در خروجي نمايش داده مي شود .

سند XML  نمونه ( Test.xml)

<?xml version="1.0" ?>
<?xml:stylesheet type="text/xsl" href="Test.xsl"?>
<PEOPLE>
   <PERSON>
      <NAME>Webmaster</NAME>
       <EMAIL>webmaster@Srco.ir</EMAIL>
   </PERSON>
   <PERSON>
     <NAME>Webadmin</NAME>
      <EMAIL>info@Srco.ir</EMAIL>
   </PERSON>
</PEOPLE>

سند XSLTبمنظور تبديل سند XMLبه HTMLبراي نمايش در مرورگر ( Test.xsl)

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<BODY>
 <TABLE BORDER="3">
 <TR>
 <TD>Name</TD>
 <TD>Email</TD>
 </TR>
   <xsl:for-each select="PEOPLE/PERSON">
     <TR>
     <TD><xsl:value-of select="NAME"/></TD>
     <TD><xsl:value-of select="EMAIL"/></TD>
    </TR>
   </xsl:for-each>
 </TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

در هر فايل XSL ، مي بايست XSL namespace معرفي گردد . بدين ترتيب پارسر از نسخه XSLT استفاده شده ، آگاهي لازم را پيدا خواهد کرد .

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

توضيحاتي در رابطه با مثال فوق :
• قبل از انجام هر گونه پردازش در رابطه با يک سند XML ، مي بايست با استفاده از يک عبارت XPath بخش مورد نظر در سند انتخاب گردد .عمليات فوق توسط يک عملگر match انجام مي شود . در صورتيکه تمام سند انتخاب گردد، از "/" = match استفاده مي گردد. يکي ديگر از رويکردهاي موجود، استفاده از الماني است که نشاندهنده تمام سند است . در مثال فوق،المان موجود در سند که داراي چنين رسالتي است با استفاده از match = PEPOLE مشخص مي گردد.

<xsl:template match=" ... ">

• عبارت زير، تمام المان هاي PERSON در بافتار PEPOLE را با استفاده از PEPOLE/PERSON که عبارتي از نوع XPath است، پيدا خواهد کرد. در صورتيکه گره انتخابي، شامل تمام المان ها در ريشه باشد ، تمام المان هاي PEOPLE انتخاب خواهند شد . با توجه به اينکه قصد نمايش تمام المان هاي PERSON در سند خروجي وجود دارد ، از عبارت فوق استفاده شده است . عبارت for-each يک حلقه تکرار بوده که باعث انجام پردازش هاي يکسان در رابطه با المان هاي مورد نظر( انتخابي ) خواهد شد .

<xsl:for-each select="PEOPLE/PERSON">

• زمانيکه يک المان PEPOLE توسط عبارت xsl:for-each انتخاب گرديد، با استفاده از عبارت xsl:value-of مقدار مربوط به المان استخراج و در فايل خروجي قرار مي گيرد. در مثال فوق، مقدار ذخيره شده در المان NAME در خروجي قرار خواهد گرفت .

<xsl:value-of select="NAME"/>

CSS

هسته اوليه XSL از CSS شکل گرفته است . CSS بمنظور تعريف و افزودن فرمت به يک فايل Html استفاده مي گردد . گرامر استفاده شده در يک Stylesheet مربوط به XSLT مشابه گرامر استفاده شده در CSS است . Stylesheet هاي استفاده شده در XSLT داراي عملکردي بسيار متفاوت نسبت به نمونه هاي خود در CSS مي باشند . CSS امکان تعريف زنگ ها ، زمينه ها ، نوع و اندازه فونت ها را براي يک صفحه وب Html فراهم مي نمايد . XSLT امکان تبديل يک فايل XML را به فرمتي ديگر فراهم مي نمايد . در صورتيکه هدف صرفا" تعريف فرمت و قالب براي يک صفحه وب باشد ، مي توان همچنان از CSS استفاده کرد . استفاده از CSS با توجه به عموميت آن، براي اکثر استفاده کنندگان گزينه اي مناسب خواهد بود .

XML Query Language

XML ، امکان تعريف تگ هاي اختصاصي را توسط مولفين سندها ، فراهم مي نمايد، بنابراين تبديل يک سند XML به نوع ديگر، همواره بعنوان يک نياز خواهد بود . از طرف ديگر، مرورگر قادر به نمايش مستقيم اسناد XML نمي باشند . بنابراين ضروري است که يک سند XML به HTML تبديل تا امکان نمايش آن توسط مرورگرهاي وب فراهم گردد . بمنظور پاسخ به نيازهاي فوق، شرکت هاي ماکروسافت، Texcel و WebMethods در سال 1998 پيشنهاد ايجاد يک زبان پرسو جو براي XML را به کنسرسيوم وب، ارائه دادند (XML Query Language :XQL) . بخشي از پيشنهاد فوق به نحوه استفاده از زبان XSL در اسناد XML اشاره داشت . در سال 1999 کنسرسيوم وب ، تصميم به يکپارچه نمودن تمامي تحقيقات انجام شده در رابطه با " ايجاد يک مدل اساسي براي پرس و جو " ، گرديد . و بر همين اساس XSLT معرفي و عرضه گرديد .

XPath

در زمان پياده سازي XSLT ، گروه ديگري در کنسرسيوم وب بر روي يکي از تکنولوژي هاي مرتبط با XML و با نام XPointer فعاليت خود را آغاز نمودند. XPointer از ايده تگ هاي anchor در يک سطح جديد استفاده مي کرد . هم XPointer و هم XSLT نيازمند روشي بمنظور اشاره به بخش هاي متفاوت يک سند XML مي باشند. XSLT نيازمند انتخاب بخش هاي از يک سند XML بمنظور عمليات تبديل بوده و XPointer بمنظور الحاق دو سند به امکان فوق نياز خواهد داشت . بدين منظور مي بايست از يک گرامر متداول در اين زمينه استفاده تا امکان بکارگيري آن در XSLT و XPointer فراهم گردد . اين تکنولوژي جديد، XPath ناميده شد . با اينکه XPath زيرمجموعه اي از XSLTاست ولي مي تواند بصورت مستقل نيز استفاده گردد .
XPath زباني براي يافتن اطلاعات در يک سند XML است . با استفاده از XPath مي توان محل و موقعيت ساختار سند و يا داده هاي موجود در يک سند XML را مشخص نمود. پس از مشخص نمودن موقعيت و مکان المان مورد نظر در يک سند XML ، مي توان با استفاده از XSLT پردازش هاي لازم را در رابطه با اطلاعات مربوطه، انجام داد .کنسرسيوم وب ، تعريف زير را در ارتباط با XPath ارائه نموده است :

تعريف XPath

XPath ، زباني بمنظورآدرس دهي بخش هاي متفاوت يک سند  XMLبمنظور استفاده در XSLTو XPointerاست .

هدف اوليه XPath ،امکان آدرس دهي بخش هاي متفاوت يک سند XML است . بمنظور تامين خواسته فوق از امکانات و پتانسيل هاي متعددي بمنظور انجام عمليات بر روي رشته ها ، اعداد و منطق استفاده مي شود . XPath از يک گرامر فشرده و عدم مبتني بر XML بهمراه URI و مقادير خصلت هاي XML استفاده مي نمايد.دليل انتخاب نام XPath براي تکنولوژي فوق بدين علت است که در حقيقت از يک آدرس بمنظور حرکت در طول يک سند XML با ساختار سلسله مراتبي استفاده مي گردد. XPath يک سند XML را بعنوان درختي از گره ها شبيه سازي مي نمايد . در اين راستا ، گره هاي متفاوتي نظير: گره هاي Element ، گره هاي Attribute و گره هاي Text ، وجود دارد براي هر گره توسط XPath ، يک رشته در نظر گرفته مي شود . برخي از انواع خاص گره ها داراي اسامي اختصاصي خود مي باشند . XPath بطور کامل XML Namespace را حمايت مي نمايد .بنابراين نام يک گره توسط يک زوج ، شامل يک بخش محلي و يک Namespace از نوع URIمشخص مي گردد ( نام توسعه يافته ) .

برخي از مفاهيم اوليه XPath

گرامر استفاده شده در XPath شباهت زيادي به نحوه آدرس دهي فايل ها در يک سيتستم آدرس دهي فايل ها دارد . در صورتيکه مسير با "/" شروع گردد ، نشاندهنده يک مسير مطلق به المان مورد نياز است . در صورتيکه آدرس با " //" شروع گردد، تمام المان هائي که با شرايط اعلام شده مطابقت نمايند، انتخاب مي گردند . مثلا" //Price// ، باعث انتخاب تمام المان هاي price موجود در سند مي گردد .

Context ( بافتار )

بافتار يک پرس وجو ، گره اي در سند XML است که پردارشي بر روي آن در حال انجام است . بنابراين در تمپليت زير :

xsl:template match="/"

ما در بافتار ريشه سند XML مي باشيم . زمانيکه از از حلقه تکرار xsl:for-each استفاده مي گردد ، بافتار، گره اي است که در حال حاضر از طريق حلقه تکرار بر روي آن قرار گرفته ايم . شناخت بافتاري که توسط يک تمپليت XSL پردازش مي گردد ، بسيار حايز اهميت بوده و در خيلي از موارد و زمانيکه يک فايل XSL نوشته شده ، خروجي مورد نظر را توليد نمي نمايد ، ممکن است اشکال از بافتار باشد . زمانيکه عمليات اشکال زدائي XSL را انجام خواهيم داد ، اولين سوالي که مطرح خواهد شد ، ماهيت بافتار پردازش شده است .

مکان يابي مسيرها

با مکان يابي مسيرها ، بافتار مربوط به گره اي که قصد يافتن آن را داريم ، مشخص مي گردد . براي تعيين موقعيت يک مسير، مي توان از دو روش کوتاه و يا غيرکوتاه استفاده کرد . بمنظور انتخاب يکي از روش هاي فوق، مي بايست به حمايت آن از طرف پارسر مطمئن گرديد( از سال 2000 ، پارسر MSXML ماکروسافت، دو روش فوق را حمايت مي نمايد ) .
• گرامر کوتاه (Abbreviated ) . مثال زير، نحوه مکان يابي المان هاي موجود در يک سند XML را به صورت کوتاه توسط XPath نشان مي دهد.

<xsl:for-each select="PEOPLE//PERSON">

• گرامر غيرکوتاه (unabbreviated ) .مثال زير ، نحوه مکان يابي المان هاي موجود در يک سند XML را به صورت غيرکوتاه توسط XPath نشان مي دهد.

<xsl:for-each select="child::PEOPLE/descendant::PERSON">

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image