·~¬É·s»D
µ{§Ç¤¶²Ð
´£¨Ñ¤U¸ü

¸ò§Ú¾ÇXSL¡]¤G¡^
2000-05-04¬ê§Æªì

XSL¤Jªù

¡@¡@¤W´Á§Ú­ÌÁ¿¨ì¥ÎCSS¡]¼hÅ|¼Ë¦¡ªí¡^¨Ó®æ¦¡¤ÆXML¤åÀÉ¡A¨ä®ÄªG¦}¤£«Ü¥O¤Hº¡·N¡C¹ê»Ú¤WCSS¥Î¨Ó®æ¦¡¤ÆHTML¼Ð°O¤ñ¸û¦X¾A¨Ç¡A¥u¬O¦]¬°¥¦Â²³æ¤~¦b¤W¨Ò¤¤ªö¥Î¡C
¡@¡@XML¦b§ó¦hªº®É­Ô¥u¬O¤@ºØ¼Æ¾Ú¤å¥ó¡A«ç¼Ë±N¥¦Åܬ°§Ú­Ì¤é±`©Ò¬Ý¨ìªºHTML®æ¦¡¨º¼Ëªº¤å¥ó©O¡H¦pªG§Ú­Ì±NXML¤å¥ó¤ñ§@µ²ºc¤Æªº­ì®Æªº¸Ü¡A¨º¤\XSL´N¦n¤ñ¡§¿z¤l¡§»P¡§¼Ò¤l¡§¡A¿z¤l¿ï¨ú¦Û¤v»Ý­nªº­ì®Æ¡A³o¨Ç­ì®Æ¦A³q¹L¼Ò¤l§Î¦¨³Ì²×ªº²£«~¡GHTML¡C
¡@¡@³o­Ó¼Ò¤l¤j­P¬O³o¼Ë¡G§Ú­Ì¥ý³]­p¦nªí²{ªº­¶­±¡A¦A±N¨ä¤¤»Ý­n±qXML¤¤Àò¨ú¼Æ¾Ú¨Ó¶ñ¥R¤º®eªº³¡¤À¡§«õ±¼¡§¡AµM¦Z¥ÎXSL»y¥y±qXML¤¤¿z¥X¬ÛÃöªº¼Æ¾Ú¨Ó¶ñ¥R¡C¤@¨¥¥HÄ´¤§¡G³oXSL¹ê»Ú¤W´N¬OHTMLªº¤@­Ó¡§´ß¤l¡§¡AXML¼Æ¾Ú§Q¥Î³o­Ó¡§´ß¡§¨Ó¥Í¦¨¡§¶Ç²Î¡§ªºHTML¡C
¡@¡@XML¦b®i¶}®É¬O¤@­Ó¾ð§Îµ²ºc¡A§Ú­Ì±N¾ð§Îµ²ºc¤¤¦Û©w¸q¼Ð°OºÙ¬°¸`ÂI¡A¸`ÂI¤§¶¡¦s¦b¤÷¤l¡B¥S§ÌÃö¨t¡A§Ú­Ì­n³X°Ý¨ä¤¤ªºµ²ÂI±q®Úµ²ÂI´N­n¥H¡¨¡þ¡¨¨Ó¼h¼h¶i¤J¡C
¡@¡@¦bXSL³o­Ó´ß¤¤¡A§Ú­Ì­n±q­ì®Æ®w¡H¡HXML¨½´£¨ú¬ÛÃöªº¼Æ¾Ú¡A´N­n¥Î¨ìXSL´£¨Ñªº¼Ò¦¡¤Æ¬d¸ß»y¨¥¡C©Ò¿×¼Ò¦¡¤Æ¬d¸ß»y¨¥¡A´N¬O³q¹L¬ÛÃöªº¼Ò¦¡¤Ç°t³W«hªí¹F¦¡±qXML¨½´£¨ú¼Æ¾Úªº¯S©w»y¥y¡A§Y§Ú­Ì¤W©Ò»¡ªº¡§¿z¤l¡§¡C

°Ñ¦Ò·L³nªº¡¨XSL¶}µoªÌ«ü«n¡¨¡A§Ú­Ì¤j­P¥i±N¼Ò¦¡»y¨¥¤À¬°¤TºØ¡G

¿ï¾Ü¼Ò¦¡
< xsl:for-each >¡B< xsl:value-of >,©M < xsl:apply-templates >

´ú¸Õ¼Ò¦¡
< xsl:if > ©M< xsl:when >

¤Ç°t¼Ò¦¡
< xsl:template >

§Ú­Ì²{¦b´N¤À§O¹ï¤§¶i¦æ¤¶²Ð¡C
¤@¡B ¿ï¾Ü¼Ò¦¡
¡@¡@¿ï¾Ü¼Ò¦¡»y¥y±N¼Æ¾Ú±qXML¤¤´£¨ú¥X¨Ó¡A¬O¤@ºØÂ²³æÀò±o¼Æ¾Úªº¤èªk¡A³o¤L­Ó¼Ð°O³£¦³¤@­ÓselectÄݩʡA¿ï¨úXML¤¤¯S©wªºµ²ÂI¦Wªº¼Æ¾Ú¡C

1¡B< xsl:for-each >

¦p¦bXML¤¤¦³³o¼Ëªº¼Æ¾Ú:
< author >
< name >¤p¬ê< /name >
< name >¬KµØ< /name >
< name >¬î¹ê< /name >
< /author >
¡@¡@§Ú­Ì­nŪ¨ú³o¤T­Ó§@ªÌ¦W¦r¡A¬O¤@­Ó¤@­Ó¦a«ö¡¨author/name¡¨¤èªk¨ÓŪ¨ú¶Ü¡A¥i¦³¦h­Ó³o¼Ëªºname§r¡H¦pªG¦³¤@ºØµ{§Ç©Êªº»y¥y¨Ó´`ÀôŪ¨ú¦³¦h¦n°Ú¡I
¡@¡@·Q±o«Ü¹ï¡AXSL´£¨Ñ¤F³o¼Ëªº¨ã¦³µ{§Ç»y¨¥©Ê½èªº»y¥y< XSL:for-each >
¡@¡@¥Î¥¦Åª¨ú³o¤T­Ó§@ªÌ¦W¦rªº¤èªk¦p¤U:
< xsl:for-each select=¡¨author/name¡¨ >
¡K¡K.
< ./xsl:for-each >
select¡AÅU¦W«ä¸q¡G¿ï¨ú¡A¥¦¥i¥H¿ï©wXML¤¤¯S©w°ß¤@ªº¼Ð°O¡A¤]¥i¥H¿ï¾Ü¬Y¤@Ãþ¬Û¦Pªº¼Ð°O¡A§Ú­ÌºÙ¤§¬°µ²ÂI¶°¡C
»yªk¡G
< xsl:for-each select="pattern" order-by="sort-criteria-list">
ÄݩʡG
1. select
¡@¡@®Ú¾ÚXSL¼Ë¦¡¬d¸ß¦Ò¹î¤W¤U¤å¥H¨M©w­þÃþµ²ÂI¶°¡]º¡¨¬select±ø¥ó¡^¨Ï¥Î¦¹¼Ë¦¡´y­z¡C§@¬°¤@ºØÂ²¤Æªºªí¥Ü´N¬O¡A¦pªG§A·Q¹ï¤åÀɤ¤ªº¬Y¤@ºØ¼Ð°Oªº¤º®eªºÅã¥Ü¤è¦¡¶i¦æ®æ¦¡¤Æ¡A´N¥i¥H±NÅýselectµ¥¤_¦¹¤¸¯Àªº¼Ð°O¦W¡C¨Ò¦p±ý¹ï¼Ð°Oxml_mark¶i¦æ®æ¦¡¤Æ¡A§Y¥i¥Î¦p¤U¤è¦¡ªí¥Ü¡G
< xsl:for-each select="xml_mark" >
< !--¼Ë¦¡©w¸q-- >
< /xsl:for-each >
2. order-by
¡@¡@¥H¤À¸¹¡];¡^¤À¹j¡B§@¬°±Æ§Ç¼Ð­ãªº¦Cªí¡C¦b¦Cªí¤¸¯À«e²K¥[¥[¸¹¡]+¡^ªí¥Ü«ö¦¹¼Ð°Oªº¤º®e¥H¤É§Ç±Æ§Ç¡A²K¥[´î¸¹¡]-¡^ªí¥Ü°f§Ç±Æ§Ç¡C§@¬°¤@ºØÂ²¤Æªºªí¥Ü´N¬O¡A±Æ§Ç¼Ð­ã¦Cªí´N¬O¥Ñselect³W©wªº¼Ð°Oªº¤l¼Ð°Oªº§Ç¦C¡A¨C­Ó¼Ð°O¤§¶¡¥H¡];¡^¤À¹j¡C

2¡B< xsl:value-of >

< xsl:for-each >¼Ò¦¡¥u¬O¿ï¨ú¸`ÂI¡A¦}¨S¦³¨ú¥X¸`ÂIªº­È¡A¦n¤ñµU¤l¥u¬Oª¦¨ì¤F¾ðªº¬Y­ÓªK¤z¤W¡A¨º¤\´N¥Î< xsl:value-of >¨ÓºK¡§³Ó§QªG¹ê¡§§a¡I
»yªk¡G
< xsl:value-of select="pattern" >´£¨ú¸`ÂIªº­È
ÄݩʡG
select¥Î¨Ó»P·í«e¤W¤U¤å¤Ç°tªºXSL¦¡¼Ë¡C²³æªºÁ¿¡A¦pªG­n¦bXSL¤åÀɬY³B´¡¤J¬Y­ÓXML¼Ð°O¡]°²©w¬Oxml_mark¼Ð°O¡^ªº¤º®e¡A¥i¥Î¦p¤U¤è¦¡ªí¥Ü¡G
< xsl:value-of select="xml_mark" >< /xsl:value-of >
©Î
< xsl:value-of select="xml_mark"/ >
¥Ü¨Ò¡G
¡@¡@¦¹³B¤´¥H¤W´Áªº­Ó¤H²¾úªº§@¬°¨Ò¤l¡A§Ú­Ì»Ý­n¹ï¤å¥ó¡]­Ó¤H²¾ú.xml¡^§@¤@©w­×§ï¡A½T¤Áªº»¡¬O±N¨ä¤¤ªº²Ä¤G¦æ
< ?xml:stylesheet type="text/css" href="resume.css"? >
­×§ï¬°
< ?xml:stylesheet type="text/xsl" href="resume.xsl"? >
µM¦Z«Ø¥ß¤@­Ó·s¤å¥ó¡Gresume.xsl¡A¨ä¤º®e¦p¤U¡G
< ?xml version="1.0" encoding="GB2312"? >
< HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl" >
< HEAD >
< TITLE >­Ó¤H²¾ú< /TITLE >
< /HEAD >< BODY >
< xsl:for-each select="resume" >
< P/ >
< TABLE border="1" cellspacing="0" >
< CAPTION style="font-size: 150%; font-weight: bold" >
­Ó¤H²¾ú
< /CAPTION >
< TR >
< TH >©m¦W< /TH >< TD >< xsl:value-of select="name"/ >< /TD >
< TH >©Ê§O< /TH >< TD >< xsl:value-of select="sex"/ >< /TD >
< TH >¥Í¤é< /TH >< TD >< xsl:value-of select="birthday"/ >< /TD >
< /TR >
< TR >
< TH >§Þ¯à< /TH >< TD colspan="5" >< xsl:value-of select="skill"/ >< /TD >
< /TR >
< /TABLE >
< /xsl:for-each >
< /BODY >
< /HTML >
¡@¡@§¹¦¨³o¨Ç¥H¦Z¦A¨ÓÅý§Ú­Ì¬Ý¤@¤U¨¯¶Ô³Ò°Êªº¦¨ªG¡A«ç¤\¼Ë¡H®ÄªG¤£¿ù§a¡C§ó»ÅÁÙ¦b¦ZÀY©O¡C²{¦b§Ú­Ì¹ï¤å¥ó¡]­Ó¤H²¾ú.xml¡^§@¶i¤@¨Bªº­×§ï¡G
1. ¦b¼Ð°O< resume >«e²K¥[¤@­Ó·s¼Ð°O< document >¡Q
2. ±N¼Ð°O¹ï< resume >< /resume >¤§¶¡ªº¤º®e¡]¥]¬A³o¤@¹ï¼Ð°O¡^´_¨î¦}Öß¶K¦b¨ä¦Z¡A¦}¦b³Ì¦Z¥Î< document >µ²§ô¡C
3. ¥HNotepad.exe¥´¶}¤å¥óresume.xsl¡A¦b¼Ð°O< HTML >¤§¦Z²K¥[¤å¦r¡G< xsl:for-each select="document" >¡Q¦b¼Ð°O< /HTML >¤§«e²K¥[¤å¦r¡G< /xsl:for-each >¡A«O¦s¤å¥ó¡C
4. ¦bÂsÄý¾¹¤¤¥´¶}¤å¥ó¡]­Ó¤H²¾ú.xml¡^¡C¬Ý¨ì¤F¤°¤\¡H¨â¥÷­Ó¤H²¾ú¡I
¡@¡@´N³o¼Ë¡A§Q¥ÎXML§Ú­Ì¥i¥H½s¼g¤º®e»P¼Ë¦¡§¹¦¨¤ÀÂ÷ªº¤åÀÉ¡I·íµM¡AXSL¤å¥ó¤ñ¤@¯ëªºHTML¤å¥ó­n´_Âø¤@¨Ç¡AµM¦Ó¤@¥¹§¹¦¨«h¥i¥Î¤_®æ¦¡¤Æ©Ò¦³¦PÃþªºXML¤åÀÉ¡C

ª`¡G¦pªG«þ¨©¥N½X¡A½Ð±NªÅ®æ§R°£

 

¤¤¯ÅªÌ¤Ñ°ó
¸ò§Ú¾ÇXSL¡]¤@¡^
¸ò§Ú¾ÇXSL¡]¤G¡^
¸ò§Ú¾ÇXSL¡]¤T¡^
XSL·§­z
XML¼Ð­ãªº«e´º
XLink¤¶²Ð
XML¢w¢w¥@¬É»y¡]¤@¡^
®u¨÷¥þ²yXML§Þ¥º
¥¼¨ÓWebªº»y¨¥ -- XML
¼Ð­ã»yVRML¡]¤@¡^
¼Ð­ã»yVRML¡]¤G¡^
¼Ð­ã»yVRML¡]¤T¡^
¼Ð­ã»yVRML¡]¥|¡^

 

¡@