عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
XPath چيست ؟ ( بخش اول ) |
مديريت وب |
14148 |
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"> |
توضيحاتی در رابطه
با مثال فوق :
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 است که پردارشی بر
روی آن در حال انجام است . بنابراين در تمپليت زير :
ما در بافتار ريشه سند
XML
می باشيم . زمانيکه از از حلقه تکرار xsl:for-each استفاده
می گردد ،
بافتار، گره ای است که در حال حاضر از طريق حلقه تکرار بر روی
آن قرار گرفته ايم . شناخت بافتاری که توسط يک تمپليت XSL
پردازش می گردد
، بسيار حايز اهميت بوده و در خيلی از موارد و زمانيکه يک فايل
XSL نوشته شده
، خروجی مورد نظر را توليد نمی نمايد
، ممکن است اشکال از بافتار باشد . زمانيکه عمليات اشکال زدائی XSL
را انجام خواهيم داد
، اولين سوالی که مطرح
خواهد شد ،
ماهيت بافتار پردازش شده است .
مکان يابی مسيرها
با مکان يابی مسيرها
،
بافتار مربوط به گره ای که قصد يافتن آن را
داريم
، مشخص می
گردد . برای تعيين موقعيت يک مسير،
می توان از دو روش کوتاه و يا غيرکوتاه استفاده کرد . بمنظور انتخاب يکی از
روش های فوق،
می بايست به حمايت آن از طرف
پارسر مطمئن گرديد( از سال 2000
،
پارسر
MSXML
ماکروسافت،
دو روش فوق را حمايت می نمايد ) .
<xsl:for-each select="PEOPLE//PERSON"> |
<xsl:for-each select="child::PEOPLE/descendant::PERSON">
|
د ر بخش دوم اين
مقاله،
به بررسی عبارات و توابع
در XPath خواهيم پرداخت .
|