بررسی جايگاه تکنولوژی XPath در خانواده بزرگ XML New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  4  ارديبهشت  1396  2017  Apr.  24   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 XPath چيست ؟ ( بخش اول )

 مديريت وب

12068

8

4.6

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

XPath چيست ؟ ( بخش اول )

XPath چيست ؟ ( بخش اول )

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>

در سند فوق از يک دستورالعمل پردازشی بمنظور مراجعه به Stylesheet  بصورت زير استفاده شده است :

<?xml:stylesheet type="text/xsl" href="Test.xsl"?>


 

خروجی Html مورد نظر
Name Email
Webmaster webmaster@Srco.ir
Webadmin info@Srco.ir

 

سند 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">

د ر بخش دوم اين مقاله،  به بررسی عبارات و توابع  در XPath خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382