Ê× Ò³¾­µäÊé¼®¾«²ÊʵÀýÈÈÃÅÎÄÕÂÓï·¨Ïê½âÐÝÏÐÌìµØ  
¡¡

XSLTÇáËÉÈëÃŵÚËÄÕ£ºXPathµÄÓï·¨

ÎÄÕ³ö´¦£º   ·¢²¼Ê±¼ä£º2005-02-26
 

4.XPathµÄÓï·¨

ÎÒÃÇÔÚÇ°ÃæÒѾ­Ìáµ½¹ý£¬XPathÊÇÓÃÀ´°ïÖúXSLTÔÚXMLÔ´ÎĵµÖвéÕÒ¶¨Î»ÐÅÏ¢µÄÓïÑÔ¡£ÔÚʵ¼ÊʹÓùý³ÌÖУ¬XPathºÍXSLT×ÜÊÇ»ìÔÚÒ»ÆðʹÓã¬ÔÚÉÏÃæÒ»ÕµÄÓï·¨Àý×ÓÖÐÎÒÃÇÒѾ­ÓÐʹÓõ½XPathµÄÓï·¨£¬Ö»ÊÇûÓÐÃ÷È·µã³ö¡£µ«W3C½«ËüÃÇ·Ö³ÉÁ½¸ö±ê×¼£¬ËùÒÔÎÒÃÇÒ²½«ËüÃDzð³ÉÁ½ÕÂÀ´½²½â¡£

4.XPathµÄÓï·¨

4.1 µ±Ç°Î»ÖÃ
4.2 Ѱַ²Ù×÷
4.3 ÔËËã·û
4.4 ¹¦Äܺ¯Êý

4.1 µ±Ç°Î»ÖÃ

µ±ÎÒÃÇʹÓÃXSLT´¦ÀíXMLÔ´ÎĵµÊÇ£¬ÎÒÃÇÓÃContextÀ´±íʾµ±Ç°ÕýÔÚ±»Ä£°å´¦ÀíµÄ½ÚµãλÖᣱÈÈçxsl:template match="/"Óï¾äÖбíʾContextÔÚÎĵµµÄ¸ù(root)½Úµã¡£ÎÒ²»ÖªµÀÈçºÎ׼ȷµÄ·­ÒëContextÕâ¸ö´Ê£¬ËüÀàËÆÓÚCÓïÑÔÀïµÄÖ¸Õ룬±íʾ³ÌÐòµ±Ç°ÔËÐеÄλÖá£Àí½âContext¶ÔÓÚÕýÈ·´¦ÀíXSLÄ£°å·Ç³£ÖØÒª£¬µ±ÄúµÄXSLÄ£°åÊä³öµÄÎĵµºÍÄúÏëÒªµÄ²»Ò»Ñù£¬×îÏÈÓ¦¸Ã·ÖÎöµÄ¾ÍÊÇContextÔÚÄÄÀï¡£
Location PathsÊÇÓÃÓÚÉ趨ÄãÏëҪѰÕÒµÄContext½ÚµãλÖ᣾ÍÀàËÆDOSµÄĿ¼ÃüÁî¡£ÎÒÃÇ¿´¸öÀý×Ó

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

ÆäÖÐchild::PEOPLE/descendant::PERSON¾ÍÊÇXPathÓï·¨£¬Õâ¸ö±í´ïʽ¾ÍÊÇÒ»¸öLocation Paths£¬´úÂë˵Ã÷ÒªÏÔʾËùÓÐPEOPLEÔªËØµÄ×ÓÔªËØºÍËùÓÐPERSONÔªËØµÄ×ÓÔªËØ¡£Í¨³£ÎÒÃÇ»á²ÉÓøü¼òµ¥µÄд·¨£º

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

ÎÒÃÇÀ´½âÊÍpathµÄÁ½ÖÖ±íʾ·½·¨£º"/"ºÍ"//"¡£
"/"ÊDZíʾµ±Ç°ÎĵµµÄ½Úµã,ÀàËÆDOSĿ¼·Ö¸î·û¡£ÀýÈ磺/PEOPLE±íʾѡÔñ¸ù½ÚµãϵÄPEOPLEÔªËØ£»PEOPLE/PERSON±íʾѡÔñPEOPLEÔªËØÏÂËùÓеÄPESON×ÓÔªËØ¡£
"//"Ôò±íʾµ±Ç°ÎĵµËùÓеĽڵ㡣ÀàËÆ²é¿´Õû¸öĿ¼¡£ÀýÈ磺//PEOPLE±íʾѡÔñÎĵµÖÐËùÓеÄPEOPLEÔªËØ£¬ÎÞÂÛËüÔÚʲô²ã´Î£»PEOPLE//PERSON±íʾÔÚPEOPLEÔªËØÏÂËùÓеÄPERSONÔªËØ£¬ÎÞÂÛËüµÄ²ã´Î¶àÉî¡£

4.2 Ѱַ²Ù×÷

AxisºÍPredicateÊÇXPathÓï·¨ÖжÔLocation Paths½øÐж¨Î»²Ù×÷µÄÓï·¨£¬¾ßÌåµÄÓ÷¨ÁбíÈçÏÂ

AxisÓï·¨±í
--------------------------------------------------------
±í´ïʽ ¼òд ˵Ã÷
--------------------------------------------------------
self . Ñ¡Ôñµ±Ç°µÄ½Úµã.¡£
Àý×Ó :
<TD><xsl:value-of select="."/></TD>
´úÂë±íʾÔÚµ±Ç°Î»ÖòåÈ뵱ǰµÄ½Úµã°üº¬µÄÎı¾(text)Öµ£¬
--------------------------------------------------------
parent .. Ñ¡Ôñµ±Ç°½ÚµãµÄ¸¸½Úµã¡£
--------------------------------------------------------
attribute @ Ñ¡ÔñÒ»¸öÔªËØµÄËùÓÐÊôÐÔ¡£
Àý×Ó:
<TD><xsl:value-of select="@PERSONID"/></TD>
Ñ¡ÔñPERSONÔªËØµÄËùÓÐÊôÐÔ.
--------------------------------------------------------
child Ñ¡Ôñµ±Ç°½ÚµãµÄËùÓÐ×ÓÔªËØ¡£
--------------------------------------------------------
ancestor Ñ¡Ôñµ±Ç°½ÚµãµÄËùÓи¸ÔªËØ(°üÀ¨¸¸ÔªËصĸ¸ÔªËØ£¬ÀàÍÆ)
--------------------------------------------------------

Axis°ïÖúÎÒÃÇÑ¡Ôñµ±Ç°½ÚµãÖÜΧËùÓеĽڵ㣬¶øPredicateÔòÓÃÀ´¶¨Î»µ±Ç°½ÚµãÄÚ²¿µÄÔªËØ¡£±íʾ·½·¨Îª·½À¨ºÅ[]Öмӱí´ïʽ£º[ Expression ]¡£¾ßÌå¾ÙÀýÈçÏÂ:

PERSON[position()=2]
Õâ¾ä´úÂë±íʾѰÕÒµÚ¶þ¸ö"PERSON" ÔªËØ

PERSON[starts-with(name, "B")]
Õâ¾ä´úÂë±íʾѰÕÒËùÓÐÃû³ÆÒÔ"B"¿ªÍ·µÄPERSONÔªËØ¡£

4.3 ÔËËã·û

ÕâÒ»½Ú½éÉÜXPathµÄÔËËã·û(Expressions)£¬ÁбíÈçÏ£º
--------------------------------------------------------
ÔËËã·û ˵Ã÷
--------------------------------------------------------
and, or ¾ÍÊÇÆÕͨÒâÒåµÄand, or
--------------------------------------------------------
= µÈÓÚ
--------------------------------------------------------
!= ²»µÈÓÚ
--------------------------------------------------------
>, >= ´óÓÚ£¬´óÓÚµÈÓÚ
--------------------------------------------------------
<, <= СÓÚ£¬Ð¡ÓÚµÈÓÚ¡£×¢Ò⣺ÔÚXSLÎļþÖУ¬<·ûºÅÒªÓÃ< ±íʾ
--------------------------------------------------------
+, -, *, div ¼Ó¼õ³Ë³ý
--------------------------------------------------------
mod ȡģ
--------------------------------------------------------
| Á½¸ö½ÚµãÒ»Æð¼ÆËã
--------------------------------------------------------

4.4 ¹¦Äܺ¯Êý(Functions)

ÔÚXPathÀïÓкܶ๦Äܺ¯Êý¿ÉÒÔ°ïÖúÎÒÃǾ«È·Ñ°ÕÒÐèÒªµÄ½Úµã¡£

count()¹¦ÄÜ
×÷ÓãºÍ³¼Æ¼ÆÊý£¬·µ»Ø·ûºÏÌõ¼þµÄ½ÚµãµÄ¸öÊý¡£
¾ÙÀý£º<p><xsl:value-of select="count(PERSON[name=tom])"/></p>
˵Ã÷£º´úÂëµÄÓÃ;ÊÇÏÔʾPERSONÔªËØÖÐÐÕÃûÊôÐÔֵΪtomÓм¸¸ö¡£

number()¹¦ÄÜ
×÷Ó㺽«ÊôÐÔµÄÖµÖеÄÎı¾×ª»»ÎªÊýÖµ¡£
¾ÙÀý£º<p>The number is: <xsl:value-of select="number(book/price)"/></p>
˵Ã÷£º´úÂëµÄÓÃ;ÊÇÏÔʾÊéµÄ¼Û¸ñ¡£

substring() ¹¦ÄÜ
Óï·¨£ºsubstring(value, start, length)
×÷Ó㺽ØÈ¡×Ö·û´®¡£
¾ÙÀý£º<p><xsl:value-of select="substring(name, 1, 3)"/></p>
˵Ã÷£º´úÂëµÄÓÃ;ÊǽØÈ¡nameÔªËØµÄÖµ£¬´ÓµÚÒ»¸ö×Öĸ¿ªÊ¼ÏÔʾµ½µÚÈý¸ö¡£

sum()¹¦ÄÜ
×÷ÓãºÇóºÍ¡£
¾ÙÀý£º<p>Total Price = <xsl:value-of select="sum(//price)"/></p>
˵Ã÷£º´úÂëµÄÓÃ;ÊǼÆËãËùÓм۸ñµÄºÍ¡£

ÉÏÃæÕâЩ¹¦ÄÜÖ»ÊÇXPathÓï·¨ÖеÄÒ»²¿·Ö£¬»¹ÓдóÁ¿µÄ¹¦Äܺ¯ÊýûÓнéÉÜ£¬¶øÇÒĿǰXPathµÄÓï·¨ÈÔÈ»ÔÚ²»¶Ï·¢Õ¹ÖС£Í¨¹ýÕâЩº¯ÊýÎÒÃÇ¿ÉÒÔʵÏÖ¸ü¼Ó¸´ÔӵIJéѯºÍ²Ù×÷¡£

¿´µ½ÕâÀÎÒÃǵÄÈëÃŽ̳̾Ϳì½áÊøÁË¡£Í¨¹ý×ßÂí¹Û»¨Ê½µÄ¿ìËÙѧϰ£¬Ï£Íû´ó¼Ò¶ÔXSLTÓ¦¸ÃÓÐÁËÒ»µã»ù±¾¸ÅÄXSLTÊÇÒ»ÖÖת»»XMLÎĵµµÄÓïÑÔ£¬Ëü°üº¬Á½¸ö¹ý³Ì£º×ª»»ºÍ¸ñʽ»¯¡£XSLTµÄ¹¦ÄܱÈCSSÇ¿´óµÃ¶à£¬ËüÓÐÀàËÆÊý¾Ý²éѯµÄÓï·¨¡£Èç¹ûÄú¶ÔXSLT¸ÐÐËȤ£¬ÄÇôÒÔÉϵÄ֪ʶÊÇÔ¶Ô¶²»¹»µÄ£¬ÐèÒª²éѯ¸ü¶àµÄ×ÊÁÏ¡£°¢½ÝÔÚ×îºóÒ»Õ¸½Â¼Îª´ó¼ÒÌṩÁËÖ÷ÒªµÄXSLT×ÊÔ´¡£

[·µ»Ø¶¥²¿¡ü]   
 
¡ùÏà¹ØÎÄÕ¡ù
 

¡òʹÓÃjavascript+xmlʵÏÖ·Ö
¡ò°üº¬ÖÐÎÄ×Ö·ûµÄURL±àÂëÎÊÌâ
¡òÓÃXMLÊý¾Ýµº½áºÏDomÖÆ×÷ͨ
¡òʹÓÃÕýÔò±í´ïʽ½øÐÐxmlÊý¾Ý
¡òÓÃXMLºÍSQL 2000À´¹ÜÀí´æ´¢
¡òΪºÎXML¶ÔWeb·þÎñºÜÖØÒª
¡ò°ÑÊý¾Ýת»»³ÉXML¸ñʽµÄºÃ´¦

 
¡ùÈȵãÎÄÕ¡ù
 ¡¤Ê¹ÓÃxmldomÔÚ·þÎñÆ÷¶ËÉú³É
¡¤XSL¼òÃ÷½Ì³Ì(3)ÔÚ¿Í»§¶ËµÄ
¡¤XSL¼òÃ÷½Ì³Ì(2)XSLת»»
¡¤XSLTÇáËÉÈëÃŵڶþÕ£ºXSLT
¡¤XSL¼òÃ÷½Ì³Ì(4)ÔÚ·þÎñÆ÷¶Ë
¡¤XSL¼òÃ÷½Ì³Ì(5)XSLµÄË÷Òý
¡¤XSL¼òÃ÷½Ì³Ì(6)XSL¹ýÂ˺Ͳé
 
¡¡