ЗߜŸ™ ‚ƒ áË̓͂— XML

ÜßÁ ś‹–

Uche Ogbuji ŕ…Œßœ
LinuxWorld.com
‚ŸœÍž„‹ ŕ›‚˜œ : ݇ͅ›

ËéŸéË ݂釜Á XML ‚ƒ ˟œÁ߅˙› ŕ— ˙Ÿ‚Í‚— ŕƒ áͅ–Ÿ› ŕ‚˜œ ŕ™‚–› ޟÁ ÍË
ŕËéŒ ŕËéŸéŒ— XML ˙ߋƒ ЗߜŸ™ ŕ›‚‡ ŕ— ‚‡œŔ ÎÁ ŕœ‚…ŠƒŒßŠ .ŊÁ˜Á ݟÁߊ
˙‚éÍé˜éŒÎÁË̈́ ÎÁ ŕ— ˙Ÿ‚žœ‚ƒÎ ß Đ—ßœŸ™ ŕ‹ß… ˙‚ŕĎß̈́ ÎÁ á͂Ÿ‹ƒ ŹĹ‹Á
CoCOON ŕĎßÍé„ .Ë霅‹ ŕ›‚‡ ޟÁ ß· ‚ŕœ‚Šƒ‚…— ß ËœŸ‚›œ˙› ŕ˂•…‹Á XML
ÎÁ ŕéœéŸé›Î ڟ ÍË Ü–Áˉ ŕ— Ë΂‹˙› XML ˙ŒÎÁË̈́ ݅‹Ÿ‹ ڟ Apache ŘÁÍÔÁ ÍË
.ŋÁ ͅߙ‡ Ëߊ ŕƒ‚Œ› á͂‡… ˙‚ƒ–Í ͟‚‹

ŕéƒ Koffice ˙ÁÍéƒ ˙陉› ˙‚ÜŸ‚• ś͕ ŢÁߜƒ XML ÎÁ ŹK ŗ‹Ë ԟ‰› ŹKDE
ŹXML ˙‚éÍÁÎéƒÁ ÎÁ ŕéßé›é‡› ڟ ˙ÁÍÁË GNOME .˟‚›œ˙› ŕ˂•…‹Á Ëߊ ͟ƒ…
ŕéŠé‹éœ) CVS ŕƒ Ô߃͛ ˙ŠÍƒ ß ˙™— ŕß›‡› ß· ˙ŠÍƒ Ź‚ŕ›‚œÍƒ ß Źŕœ‚Šƒ‚…—
GNOME ŕé— ÝéŸéœéŸéƒ˙› ǐ… ܂›— ‚ƒ ޟœˆ› .ˌ‚ƒ˙› (Concurrent ˙‚Ý…‹Ÿ‹
˙éœé…ƒ› ŢŔ ᘃ͗Ÿ„ ˙‚ÜŸ‚• ß ËŸ‚›œ˙› ŕ˂•…‹Á libxml ˙‚ÍÁ΃Á ÎÁ ‚…Ë›
.ˌ‚ƒ˙› XML ̓

ÎÁ á͂éŸé‹éƒ ‚éƒ ŕÁ͛ XML ÎÁ ˙–ŸƒÔ… ‚ƒ 8i ŕŠ‹œ ܗÁÍßÁ Ź˙͂‡… ŕœŸ›Î ÍË
ŹÝé…é•é˜ ŕ— ÍßԜ‚› .ŋÁ ŕˌ ËÍÁß Đ—ßœŸ™ ŕƒ ‚ÜŸ‚• ş͟˛ ˙Á̓ ‚ÍÁ΃Á
ŮéŸÍéÔ ÎÁ ÁÍ ËßéŠ Í韋› ˟‚ƒ IBM ŗ͌ Üߍ‰› DB2 Universal Database 6.1
Ĺ镂ŸÍË ÁÍ ŕ›‚œÍƒ ޟÁ ÎÁ ŕŠ‹œ ڟ ß ŕËߛœ ݂œ ц ŢŔ ŕ‹ß… ˙Á̓ ŕ—Ÿœ‚‹—
˙ÁÍéƒ Universal DBMS ˙‚éengine áËÁËéé… Ţߜ—Á ݝ .˟‚›œ Á˟„ ŹËœÁŕË͗
.ŋÁ ŕŸž… ܂‰ ÍË Đ—ßœŸ™

˙ÁÍéƒ XML ˙‚éŕĎßÍé„ ÎÁ ˙霚ßéÔ ˙‚éž…‹Ÿ™ ŕ— Ĺ‹Ÿœ á΂Ÿœ ͎‚‰ ܂‰ ÍË ‚›Á
ß Freshmeat ĹéŸ‚é‹ ÍË ‘éŸÍé‹ ˙ßé‡é…‹‡ ڟ ‚ƒ .݋Ÿßœƒ ‚›Œ ˙Á̓ ÁÍ Đ—ßœŸ™
Ĺé‹Íéžé• ËéŸéœÁßé…˙é› XSL ß DOM ŹXML ˜œ‚› á˟™— ł›™— ˙ŠÍƒ ÎÁ ŕ˂•…‹Á
.˟œ— ŕ‚ŸÍË ÁÍ ‚ŕĎß̈́ ޟͅ˟ˇ



˟ˇ ޟ›Á͕
˙‚éËÍÁË霂é…é‹Á ŕé— Ĺ•˜ ŢÁ߅˙› ß Ĺ‹Á á͟˜ ܗŒ ܂‰ ÍË ‚ËÍÁ˜‚…‹Á Ђ‹Á
.ËéŸé‹Í ˜Áߊ ŕŠ‹œ ޟÁ ŕƒ áËß΃ ‚Ÿ ß ŕ˟‹Í 1.0 ŕŠ‹œ ŕƒ Ţߜ—Á ݝ á˟™—
XML á͂é˜Î‚é‹ ŕéƒ ‚é… Ëéœéœ—˙› ڛ— ‚›Œ ŕƒ ŕ— Ëœ…‹ ˙Ÿ‚ËÍÁ˜‚…‹Á ‚žœŸÁ
.˟‹Íƒ


˙Η͛ ËÍÁ˜‚…‹Á :XML

XML ˙‚ÜŸ‚• ÍË ‚tag ˙›‚‹Á ˙‚clashe ͟‹•… ˙Á̓ ˙–ŸÍÔ :Namespaces

˙ÁÍéƒ ËÍÁË霂…‹Á ˙‚ П•Í…œŸÁ ÎÁ ŕß›‡› ڟ Document Object Model : DOM
.‚žœŔ ł–‰™› ß HTML ß XML ˙‚ ܟ‚• ŕƒ ˙‹Í…‹Ë

˙é›ß雏 ނƒÎ ڟ Ź(Extensible Stylesheet Language Transformation) :XSLT
HTML ˙‚éÍé˜ÍßÍé› ŕéƒ XML ˙‚ÜŸ‚• ܂–…œÁ ß ÇÁ͊…‹Á އ ŕ™Ÿ‹ß ޟͅžƒ ŕ—
.ˌ‚ƒ˙›

ŕ…•‚Ÿ ŕ‹ß… ˙‚ÚœŸ™ ˙‚ž…Ÿ™ƒ‚– :Xlink

˙é›éžé› ˙é™éŸŠ ŕŠŒ› ŹĹ‹Ÿœ ‚˙™ƒ– ś˖ ŕƒ ŕ— ËÍÁ˜‚…‹Á ޟÁ :XML Schema
.ˌ‚ƒ˙› (Document Type Definition ؕŠ›) DTD ÎÁ á͂Ÿ‹ƒ ͘œ‚Ÿƒ ŕ— ËŒ‚ƒ˙›
.˟‚›œ˙› ˙‹Í̓ XML ÚÍÁ˛ ˙ßÍ ŕËÍÁß ˙‚ž…ŸËßˉ› ˙Á̓ ÁÍ ÚÍÁ˛ Öߜ ß



Á·Á ܛ‚Œ ‚žœŔ .˜Œ‚ƒ˙› ܟ›—… ܂‰ ÍË ‚Ÿ ˜…‹ ܛ‚— ‚Ÿ ‚ËÍÁ˜‚…‹Á ͟‚‹
ÎÁ Ĺé—陂ŸË ڟ ß XML ÎÁ ˙ƒŸ—Í… ڟ ß XHTML ß XML Query ނƒÎ ˜Œ‚ƒ˙› XML
ŕéŸé–éƒ Üé†é› ‚éËÍÁË霂é…é‹Á ޟÁ ‚›Á .˜‡œ˜˙› Ă߈͂ˆ ޟÁ ÍË ˙˜› HTML
.˜ÍÁ˜ şΗ͛ ‚ËÍÁ˜‚…‹Á

ÝéÁߊ É͌ Áːƒ ß ÝË ˙› ɟŽß… ŕšŠ ÍßÔ ŕƒ ÁÍ ‚ËÍÁ˜‚…‹Á ŕ™‚–› ޟÁ ÍË
ŕéƒ áÍé…éŒéŸéƒ ĹÍËé– ËéœéœÁ߅˙› ЗߜŸ™ ʼn… ‚žŸĎߙߜ—… ޟÁ ŕœß˜ˆ ŕ— ËÁË
.˜Ëƒ ЗߜŸ™ ˙‚ŕ›‚œÍƒ

XML ł鍊Œ› ˙‹Í̓ .ݝ˃ ɟŽß… ‚ž…Ÿ™‚• ޟÁ ŕ͂ƒÍË ŕ›™— ˜ˆ ˟Ëƒ ŕ΂‡Á
áË‚é ˙‚éÍ‚é…é•Í ß Ţ‚ƒÎ ˙™Á ŕ…‹ ŕŠŒ› ޟÁ .ŋÁ ͂— ÎÁ ˙ŒŠƒ 1.0 ŕŠ‹œ
‚éÍ酗Á͂— áÍÁ̘˗ ܆› ˙Áŕ˟ˆŸ„ Ü삋› ‚ƒ ß Ëœ—˙› ܂ƒœË ÁÍ XML Íߋ‹Á̈́
ŕéˆ ŕ關ŸÁ ß ŹËŸ…‹ ‚ËÍÁ˜‚…‹Á ŕ͂ƒÍË ŮŸ–‰… ܂ƒœË ŕƒ Í˜Á .ËÍÁË Í‚—ß͋
ŹËßé›éœ Üé–é…éœé› XML ŕƒ SGML ÎÁ ˟‚ƒœ ÁÍ ˙Ÿ‚ŃŠƒ ŕˆ ß ËŸ‚ƒ ÁÍ ˙Ÿ‚žŒŠƒ
ÎÁ á͂韋ƒ ˙Á̓ ˙™ß ˟œ— Üͅœ— ÁÍ xml-dev ܆› ˙Ÿ‚mailinglist ˟œÁ߅˙›
.˜…‹ ݗ‰› 𛂗 XML ŕ…‹ łŠŒ› ŹŘÁ˝Á





XML ÍË ‚éNamespace
.Ĺé‹Á ˙雂‹Á ˙‚clash ŹËœ—˙›œ ւ‡ÍÁ ŢŔ ŕƒ XML ŕ— á˟™— ˙‚ŕœŸ›Î ÎÁ ˙—Ÿ
˙ÁÍéƒ ‚žœŔ ÎÁ ˙—Ÿ .ݟŸ‚›œ˙› ŕ˂•…‹Á ‚tag ÎÁ ŕ…‹Ë ßË ÎÁ ŕ— ËŸŸ‚›œ Íߍ…
ß Ë錂éƒ˙› ŕ͟’ ß ‚ž•Á͘Á͂„ ŹŢÁߜ ŹËŸ—‚… އ ÁÍ ˙›ß› ÚÍÁ˛ ˙‚ ś͕
Ëߊ ŕƒ ‚Ë— ݂œ Öߜ ͍‚œ ˙™ßÁ ÍË .ˌ‚ƒ˙› ˙ƒ‚ŸÍÁ΂ƒ ł‰šÔÁ ˙Á̓ á͘ŸË
Ëé— áËééƒ ß ËßéŒ Ĺ›Í• ͅߟ„›‚— ˗ ŢÁߜƒ ŋÁ ޗ›› ŕ— Ëߌ ˙› ւ‡ÍÁ ޅ›
.ˌ‚ƒ˙› ˟™ß… łŠŒ› ÎÁ ˙…›‹–

<document>

  <description>Memo</description>

  <title>Re: Widget 404 Request</title>

  <paragraph>

    We need 5 of

      <product>

       <code>00808</code>

       <name>Widget 404</name>

       <description>Gee-gaw and doo-dad</description>

      </product>

     to send out to reviewers this week.

  </paragraph>

</document>


ËéŸé™ßé… Ë— ڟ ŕƒ ‚‡œŸÁ ÍË Ë— ŕ— ËŒ‚ƒ ɎÁß Í•œ ڟ ˙Á̓ ŋÁ ޗ›› ŕˆ Í˜Á
˙‚éÍßé…ßé› ˙Á̓ ŕ— Ĺ‹Á ޗ›› ˙™ß ŹÍ…ߟ„›‚— ˗ ĐÍߋ ŕƒ ŕœ ß Ëœ—˙› ŕ͂ŒÁ
ŕéƒ Íé‡éœé› ‚éžéœŔ ŃÎÁË̈́ ǟ‚…œ ß ËŒ‚ƒœ ɎÁß style ˙‚Í˜ŒÎÁË̈́ ß ß‡…‹‡
ŢéŸé›é ˙ÁÍÁË element-type name ÉÍéŒ ŕ— ËŸŒ‚ƒ ŕ…ŒÁË ŕ‡ß… .ËË͘ ˙›˜ÍË͋
ß ˙é›ß雏 ˙‹Ÿßœ ŕ›‚œÍƒ ˙‚žœ‚ƒÎ ÍË ÚͅŒ› ˙Ÿ‚œÁ߅ ŕƒ Î‚Ÿœ XML .ŋÁ ܂—ŒÁ
Ôé‹ßé… ŕé— XML ÍË Ëßé‡ßé› ˙‚éNamespace ÎÁ .ËÍÁË ËÍé• ŕéƒ Í鍉œ› ˙›‚‹Á
ŢéŸÁ Ĺé‰é… .ËéŸéœ— ŕ˂•…‹Á Ëߌ˙› ŕŸß… (W3C) World Wide Web Consortium
:Ëߌ ˙‹Ÿßœ ΂ƒ ͟ΠĹÍߍƒ ˜Á߅˙› ˗ łŠŒ›



<document xmlns:mkt="http://our.industry.org/schema/product-info" xmlns="http://xml-typographers.org/typo-markup-standard/1.0">

  <description>Memo</description>

  <title>Re: Widget 404 Request</title>

  <paragraph>

    We need 5 of

      <mkt:product>

       <mkt:code>00808</mkt:code>

       <mkt:name>Widget 404</mkt:name>

       <mkt:description>Gee-gaw and doo-dad</mkt:description>

      </mkt:product>

     to send out to reviewers this week.

  </paragraph>

</document>


ŕ˛ŔÍË ‚Ÿß˜ ß ÉŽÁß ĹÍߍƒ Źŕˌ ËÍÁ˜‚…‹Á ŃßÍ ŢŸÁ ‚ƒ ݞƒ› ˙›‚‹Á ŕŸ™— ܂‰
mkt ËéœßéŒéŸé„ ‚ƒ ˙™ßÁ .˜—˙› ؟͐… ÁÍ namespace ßË Ű… .˜Á
ĐÍËŔ ˙ÁÍéééééƒ á͂éééééé…ééé‹ééé› Ý‚éééœ ß ŕËéééŸËÍééé˜ ŇéééŠééé‹ééé›
‚éƒ ŕé— ˙鍂Š ͅ›Á͂„ .ŋÁ http://our.industry.org/schema/product-info
ß Ĺé‹Á ŕËéŒ ŘŸÍ… namespace ڟ ŕ— Ĺ‹Á ŕ…—œ ޟÁ ͘œ‚Ÿƒ Ëߌ˙› Öß͌ xmlns
ËéŸËé‡ namespaces ؟͐…͍‚œ ˙›‚‹Á ÍË ŕ— ËŒ‚ƒ˙› á˜ߌŸ„ ŕŠŒ› ݋Á ŕŸ–ƒ
ŕé— XML Íßé‹é‹ÁÍé„ ÚéŸ ÍéŐéœ ÎÁ .ËÍ韘 ˙› ÍÁ͖ ŕ˂•…‹Á ËÍߛ ß ŕˌ ҊŒ›
.Ĺé‹Á ŕé…é•‚Ÿ ͂ƒ…Á URL ԋ߅ ۅ Ë͟˜ ˙› ŕ˞ƒ ÁÍ namespaces
ÎÁ Superset ÚéŸ (Uniform Resource Identifier) URI ŕé— ËŸŒ‚ƒ ŕ…ŒÁË ŕ‡ß…
Ĺé›Íé• Í՜ ÎÁ ‚namespace ؟͐… ŕ— ËŸŒ‚ƒ ŕ…ŒÁË ŕ‡ß… ޟœˆ› .ˌ‚ƒ˙› URL
.Ĺé‹Á URI ˙Á̓ ˙ßŠƒ ˙œ› Öߜ ͝ ˖‚• ËÍÁ˜‚…‹Á ŕŠŒ› ‚›Á .ŋÁ URI ڟ
ÁËéŸé„ áÎéŸéˆ URL: ÍË ŕ— ŢŔ ˙Á̓ ˙…œ‚›Ž Öߜ ȟ ŹËŒ‚ƒ URL ڟ ŢŔ ŕˆœ‚œˆ
Íßé‰é› Üßé‰ ˙韂éĆ‰ƒ ŕ…ƒ™Á .ŋÁ Ӊ› Öß͌ ŕԖœ ڟ ޟÁ .ËÍÁ˜ Ëß‡ß ËŸœ—
͂— ˙ƒßŠƒ ݅‹Ÿ‹ ˙™ß ËÍÁË Ëß‡ß URI ß ‚namespace ˙Á̓ ҂Š ˙œ› ڟ ŢÁ˖•
.˜—˙›

ß xmlns ԋ߅ ŕ— Ĺ‹Á Ó͕ џ„ namespace ŕ˜œ— ҊŒ› áːƒ ŕŠŒ›
˙雂é‹Á ݂›… ŕ— Ĺ‹Á Ó͕ ޟÁ ̓ XML ͘ŒÎÁË̈́ .ŋÁ ŕˌ ނŸƒ á˜ߌŸ„ Ţß˃
Namespaces .ËéœÍÁË ÍÁÍé– Ó͕ џ„ namespace ÍË ËœßŒŸ„ Ţß˃ element-type
š‚éƒ ˗ ܂†› ˙Á̓ .Ëߛœ override ŢÁ߅˙› ÁÍ Ó͕ џ„ ˙‚namespace ŕ™›‡œ›
:ˌ‚ƒ˙› Ü˂› ͟Π˗ ‚ƒ ‚‹‚‹Á


<document xmlns:mkt="http://bogus.com/name-space-squatters" xmlns="http://xml-typographers.org/typo-markup-standard/1.0">

  <description>Memo</description>

  <title>Re: Widget 404 Request</title>

  <paragraph>

    We need 5 of

      <mkt:product xmlns:mkt="http://our.industry.org/schema/product-info">

       <mkt:code>00808</mkt:code>

       <mkt:name>Widget 404</mkt:name>

       <mkt:description>Gee-gaw and doo-dad</mkt:description>

      </mkt:product>

     to send out to reviewers this week.

  </paragraph>

</document>


ÍË eggs ݂éééœ ß http://www.a.cd/ns1 ĐÍËŔ namespace ÍË spam ŕéééŠéŒé›
џ„ ‚namespace ˙Á̓ ޟœÁߖ .ˌ‚ƒ˙› http://www.b.de/ns2 ĐÍËŔ Namespace
Íé…錟ƒ łšÔÁ ˗ ˙Á̓ .ËÍÁË Ĺ߂•… ˙›— ‚attribute ß ‚element ÍË Ó͕
ŕéƒ) ËéŸé삛œ ŕ‡Á͛ Namespace ËÍߛ ÍË ÁÍ James Clark ÎߛŔËߊ ˟œÁ߅˙›
libxml Ëééƒ ŕéƒ ą.´ ŕéŠé‹œ ÎÁ .(Ëߌ ŕ‡Á͛ ŕ™‚–› ˙‚ž…œÁ ÍË ‘ƒ‚œ› ś‹–
˙ÁÍéƒ ‚ébug fix ÎÁ ˙éŽééƒ .Ĺé‹Á ŕËéŒ ŕ•‚ŽÁ XML ˙‚Namespace ˙œ‚ƒŸ…Œ„
ÎÁ á͂éŸé‹ƒ ŕ—œŸÁ ŕƒ ŕ‡ß… ‚ƒ .ŋÁ ŕˌ ŕŽÍ ą.ś ŕŠ‹œ Arribute Namespace
˙éƒßŠ ŕ͌Ÿ„ ˙™ß ŹËœœ—˙›œ ˙œ‚ƒŸ…Œ„ ÁÍ ‚namespace Îߜ XML ˙‚Í˜ŒÎÁË̈́
ÎÁ ‚Parser ÎÁ á͂Ÿ‹ƒ ŕ— (SAX) Simple API for XML ŕ…‹ƒ ‚œ›Ž .ËÍÁË Ë߇ß
Namespace ÎéŸéœ DOM ß .˜—˙›œ ˙œ‚ƒŸ…Œ„ ÁÍ Namespace ŹËœœ—˙› ŕ˂•…‹Á ŢŔ
.˟‚›œ˙›œ ˙œ‚ƒŸ…Œ„ ÁÍ





(MOD) The Model Object Document
W3C .ËéŸéŒ‚ƒ ‚œŒŔ ͘Íß͛ JavaScript ˙‚Ĺ„ŸÍ—‹Á ٟÍÔ ÎÁ DOM ‚ƒ ŋÁ ޗ››
ŕéƒ Í˜Íß͛ ڟ ÎÁ ˗ ܂–…œÁ ÍË Ţ‚‹Ÿßœ ŕ›‚œÍƒ ͂— řߞ‹ އ ÁÍ ŕŠŒ› ޟÁ
‚éƒ ŕ郂éŒé› ËÍÁË霂é…é‹Á ŕƒ Î‚Ÿœ DOM ŕß͘ .ŋÁ ŕËÁË ŕ‹ß… ͘ŸË ͘Íß͛
.ËÁË ŕéěÁÍÁ ÁÍ DOM ŕé…é‹é ÎÁ XML ˙霂郟…Œ„ ß XML ˙‚ÍÁ΃Á ÎÁ ŕ˂•…‹Á
ÚéŸ ŢÁߜƒ DOM ÎÁ ‚ŕ›‚œÍƒ ͟‚‹ ß ‚Í˜ŒÎÁË̈́ ß XML ˙‚parser ÎÁ á͂Ÿ‹ƒ
.˜Ÿ‚›œ˙› ŕ˂•…‹Á XML ˙‚API ÍË ‚ŸŒÁ ß ‚Ë…› ˙›‚‹Á ˙Á̓ ËÍÁ˜‚…‹Á

˙‚éžé…雋– ÎÁ á͂Ÿ‹ƒ .ŋÁ XML ˙‚ŕ˜ß̈́ ˙ŸƒÔ ß ˙™Á ͂…Š‚‹ ͘œ‚Ÿƒ DOM
˙Ÿ‚attribute ˙ÁÍÁË ŕ— Ëœ…‹ Node К— ÎÁ (instance) ŕ™‰ß ÚŸ XML ŕ™—Œ…›
.˜Œ‚ƒ˙› ŕ͟’ ß firstChild ŹparentNode ܆›

ŹŢé…é› ŹÍ鍂éœé ŹĹÁËéœé…é‹é› áͅŒŸƒ ˙Š… ˙‚ĐŸ•Í…œŸÁ ŕ˜œ— ˙•͐› DOM
˙ÁÍéƒ ËÍÁË霂酋Á ˙‚ž‹š— ÎÁ ˙Áŕß›‡› ޟœˆ› .ˌ‚ƒ˙› ŕ͟’ ß ‚attribute
.˜—˙› ŕěÁÍÁ ÁÍ nodes

ŕéěÁÍÁ ÁÍ DOM ˙‚éžé‹éŸ•Í…œŸÁ ЗߜŸ™ ˙Á̓ XML ŃÎÁË̈́ ˙‚ÍÁ΃Á ÎÁ á͂Ÿ‹ƒ
ß ˙é™Áßé…é› ŃÎÁË̈́ ˙Á̓ ÁÍ SAX ‚parser ß ˙‚ŕœ‚Šƒ‚…— ޟͅ›‚‡ .˜œ—˙›
ŕéƒ ÝéŸé–…‹› ˙‹Í…‹Ë ŕ— áËÍÁߛ ˙Á̓ ÁÍ DOM ß Ëœœ—˙› ŕěÁÍÁ XML ĐÍߋ ‘ŸÍ‹
˙‚éÍÁÎéƒÁ ÎÁ ˙Áŕéß›‡› libxml-perl .˜ÍßŔ˙› ݝÁ͕ ŋÁ ΂Ÿœ ËÍߛ ÚÍÁ˛
Î韜 ß DOM ݝ ß SQX ݝ ß ËŒ‚ƒ˙› libxml ÎÁ Ĺ߂•…› ͂Ÿ‹ƒ ŕ— Ĺ‹Á Perl XML
ŕé— IBM Üßéé‰é› XML4J ß XML4C .Ë韂é›éœ˙› ˙œ‚ƒŸ…Œ„ ÁÍ Python XML ŕ…‹ƒ
ĐéŸé•Íé…éœéŸÁ ßË Í ÎÁ ŹËœŒ‚ƒ˙› C ß Á߂‡ ˙Á̓ XML ˙ߖ ˙™ŸŠ ˙‚ŕœ‚Šƒ‚…—
͂é…銂‹ Ђ‹Á ß ËÍÁË SAX ËÍÁ˜‚…‹Á П•Í…œŸÁ ڟ libxml .˜œ—˙› ˙œ‚ƒŸ…Œ„
ËÍÁË霂酋Á DOM ˙Á̓ Îߜ ݞ› ËÍÁߛ ÎÁ ˙ސƒ .ŋÁ DOM ̓ ˙œ…ƒ› ŢŔ ˙™ŠÁË
ß ‚éDTD ÍË ŕËé›Ŕ Ĺé‹Ëéƒ Ĺ‚éšéÔÁ އ ‚Namespace ˙Á̓ ‚ßŠ› ŹËœÁŕˌœ
˙‚éupdate ÍË ˙‚Ë߃›— ޟÁ ŕƒ .XML ĐÍߋ ޅŒßœ ß Ţ˜Áߊ ˙Á̓ ‚ĐŸ•Í…œŸÁ
.ŋÁ ŕˌ ŕ͂ŒÁ DOM






(XSLT) XML Stylesheet Language Transformations
‚éƒ ÁÍ ‚éžé˜é… ËéË˙› ŕ΂‡Á ËÁ͕Á ŕƒ ŕ— Ĺ‹Á ˙ŒßÍ XML ÍË Öߎߛ ޟͅƒ™‚‡
Ý釂éžé… ŕ霂éŸé› ޟÁ ÍË ˙ŸƒÔ ŕ™ě‹› ڟ .˜Ÿ‚›œ ؟͐… ނŒËߊ ҂Š ˙œ‚›
˙éŽééƒ ß ‚éËÍÁË霂…‹Á ޟ› ‚ƒ .҂Š ˙ŠÍƒ ß ËÍÁ˜‚…‹Á ˙ŠÍƒ :ŋÁ ‚žœ‚ƒÎ
ÚéŸ ŕéƒ Î‚éŸéœ XML ŕ›‚‡ .ˌ‚ƒ˙› XML Ëߊ ŕˌ ŕ…ŠŸÍ ˙‚ŕŸ‚„ ˙‹‚‹Á Ü삋›
ËéœÁßé…éƒ ŕé— áËÍÁ˜‚…‹Á .ËÁË ŇŸŠŒ… XML ܂–…œÁ ˙Á̓ ÁÍ ËÍÁ˜‚…‹Á џÁ͘
ŕ΂é‡Á ˙é…é‰ ß Ëéœé— ÜéŸËƒ… ͘ŸË ËÍÁ˜‚…‹Á ŕƒ ËÍÁ˜‚…‹Á ڟ ÎÁ ÁÍ ÚÍÁ˛
.˝˃ Ϝ ÁÍ XML ˙‚‚…ŸË ˙™— ŃÎÁË̈́

Ýé‹Á ŕé— ÍßԜ‚› .Ë߃œ ݟË͗˙› ͗• ˙…Íߍƒ ß ÝŸ–…‹› Íßԃ XSLT ŕ‹ß… ‚›Á
ŢËß雜 render އ ŕ— ËŒ‚ƒ˙› XML Stylesheet ނƒÎ ÎÁ ˙ŒŠƒ ŹËË˙› ނŒœ ŢŔ
˙Á̓ ÁÍ Ĺ“™ ۜÍ• ڟ Á˅ƒÁ W3C .ËßÍ˙› ͂—ƒ ؙ…Š› ˙‚media ÍË XML ÚÍÁ˛
ŢÁßéœééƒ ÁÍ XSLT Đ鄋 ß ËÁË ŕ‹ß… (HTML іœ ŕŸƒŒ) ނƒÎ ޟÁ ͍‚œ ނŸƒ
ŢÁß霏 ʼn… ŕ— Ë͗ ˙•͐› ҙ‚Š ś͕ ڟ ÍË XML ˙‚ŕËÁË Ţ…Š‚‹ ˙œ’ އ ˙ŒßÍ
.Ëߌ˙› ŕ…Š‚œŒ (FOs) Formatting Objects

HTML Ăé™‚é– ÍË ÁÍ XML ÚÍÁËé› ŕéœßé˜éˆ ŕ— Ë߃ ޟÁ ËÁ͕Á ˙™Á ܗŒ› ŕ…ƒ™Á
HTML ËéŸé™ß… އ ͅŒŸƒ XSL ˙‚ÝÍߕ‹œÍ… ÎÁ ‚žœŔ .˜Ÿ‚›œ render ‚Í˜Íß͛
Ëߊ ‚–Áß Transformation ނƒÎ ŕ— ËÁË ŇŸŠŒ… W3C .FOs ‚… ˜Ë͗˙› ŕ˂•…‹Á
ŕéé‹ßé… ŕ霂˜Áˇ Á͜Ŕ Ëߛœ ˙‹ ř ޟ›žƒ ß ËŸŔ˙› ͂›Œ ŕƒ ˙™Á ŕ͞› ڟ
.˝Ë

ËéÁߖ ß Ĺ‹Á ŕ˟ˆŸ„ ˙›— š‚›…‰Á ŢŔ ߗͅ ‚›Á ŋÁ ˙ߖ ͂Ÿ‹ƒ ނƒÎ ڟ XSLT
ŢÁß霐ƒ ‘–Áß ÍË .ˌ‚ƒ ŕ˜œ— ŕÁ͛˜ ŋÁ ޗ›› C/C++ ނ‹Ÿßœ ŕ›‚œÍƒ ˙Á̓ ŢŔ
˙‚éžéœ‚ƒÎ ß Scheme ŹLisp ނ‹Ÿßœ ŕ›‚œÍƒ ˙Á̓ ŹÁ͂— ˙‹Ÿßœ ŕ›‚œÍƒ ނƒÎ ڟ
ŢÁß霐ƒ .˟Ŕ ‹‰ƒ ŕ— ËŒ—˙›œ ˙™ßÔ XSLT ˙™ß .ˋÍ˙› Í՜ ŕƒ Í…˙ŸƒÔ ŕƒ‚Œ›
Ĺéžé‡ ŢŔ ÎÁ Ĺé‹Á Ţ闛› ŕ— Stylesheet ڟ ŕƒ ËŸËƒ ŕ΂‡Á Ź˙ÁŕŸ‚„ ܂†› ڟ
.ݟœ—•‚Ÿƒ áÍ՜ HTML ŢÁߜƒ ‚Namespace ܂†› ÎÁ memo ڟ ŢË͗ render



<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">

 <xsl:template match="/">

  <HTML>

  <HEAD><TITLE><xsl:value-of select='/document/title'/></TITLE>

  </HEAD>

  <BODY>

  <xsl:apply-templates/>

  </BODY>

  </HTML>

 </xsl:template>

 <xsl:template match="title">

  <H1><xsl:apply-templates/></H1>

 </xsl:template>

 <xsl:template match="paragraph">

  <P>

   <xsl:apply-templates/>

  </P>

 </xsl:template>

 <xsl:template match="product">

  <xsl:element name='A'>

  <xsl:attribute name='href'><xsl:value-of select='code'/></xsl:attribute> <xsl:value-of select='name'/>

  </xsl:element>

 </xsl:template>

</xsl:stylesheet>


˙é‡ßÍéŠ ŕƒ áÍ՜ Á˅ƒÁ ˟Ëƒ ŕ΂‡Á .ݟÎÁË̈́˙› ˗ ˙Á͇Á ŕ߉œ ŕƒ Á˅ƒÁ ÍË
ŕéŠé‹éœ ޟ™ßÁ ܃‚–› ÍË ÁÍ Stylesheet ͘ŒÎÁË̈́ ڟ ‚›Œ ŕˆœ‚œˆ .ݟÎÁ˜‚Ÿƒ
Namespaces ÎÁ ŕé— ˙é—éŸ ŢŔ ß š‚ƒ Stylesheet ŹËߌ˙› Á͇Á marketing memo
‚›Œ ŕƒ Á͜Ŕ ŕƒ‚Œ› áψ ‚Ÿ ŕˌ ŕËÁË É͌ ÜŸĚ ÍË ˙‚žƒÁ߇ ˟‚›œ˙›œ ŕ˂•…‹Á
.Ëߛœ ˝Áߊ ŕěÁÍÁ


<HTML>

 <HEAD>

  <TITLE>Re: Widget 404 Request</TITLE>

 </HEAD>

 <BODY>Memo<H1>Re: Widget 404 Request</H1>

  <P>We need 5 of

   <A href = '00808'>Widget 404

   </A>

   to send out to reviewers this week.</P>

 </BODY>

</HTML>


Ëßé‡ßé› Đé—ßœŸ™ ˙Á̓ áËː…› Stylesheet ˙‚Í˜ŒÎÁË̈́ ŕ— ÝŸß˜ƒ ˟‚ƒ Á˅ƒÁ
(ŕËéŒ ËéŸé™ßé… Ţé› Ĺé—ÍŒ ԋ߅ ŕ— Python XSLT ͘ŒÎÁË̈́) 4XSLT ÎÁ ޛ ŋÁ
ŋÁ Ë߇ߛ ݝ Ú͚— ˟‡ Üߍ‰› XT ݂œƒ á͘ŸË ͘ŒÎÁË̈́ ˙™ß ŹÝËߛœ ŕ˂•…‹Á
ŕËŸË SGML ß XML ÍÁ΃Á ÍË ŕ— ËŸ•› ͂— ڟ ŕŽÍ ˙Á̓ á͘ŸË ‘ƒ‚œ› ÎÁ ˙ß ŕ—
ŹExpat ‚é›ßÁËé› SGML ß XML ͂é›éŒ ˙ƒ ŢÁ̓͂— .ŋÁ ŕËߛœ ŕ˂•…‹Á ŹËߌ˙›
ŢéŸéœéˆé›é .ËéœéŸ‚›œ˙› ŕ•‚ŽÁ Ëߊ ŕß›‡› ŕƒ ÁÍ ‚ÍÁ΃Á ͟‚‹ ß XT ŹJade
Ĺé‹Á ‚éžéœŔ ß· Ϝ IBM Üߍ‰› Lotus XSL ŕ— ÍÁ΃Á ޟÁ ‘ƒ‚œ› ŕƒ ËŸœÁ߅˙›
ŕéƒ Ëœ…‹Ÿ ނ˜ŸÁÍ ˙˜› ŕ— ‚ÍÁ΃Á ޟÁ ŕ‚ŸÍË ĐÍËŔ ˙Á̓ .˟Ÿ‚›Í• ŕ‡Á͛
áÍé˜éŸË ˙‚Í˜ŒÎÁË̈́ .˟삛͕ ŕ‡Á͛ ˟œÁ߅˙› ŕ™‚–› ޟ› Resources ś‹–
˙éƒßŠ ͂Ÿ‹ƒ Öß͌ ‚žœŸÁ ‚›Á ŹË͗ ˜Áߊ ͂— ЗߜŸ™ ÍË ŕ— ËœÍÁË Ëß‡ß ÎŸœ
Stylesheet ß XML ĐÍßé‹ Ü›‚Œ ˙‚ŕ˜ß̈́ ˟œÁ߅˙› ËÍÁߛ ÎÁ ˙™ŸŠ ÍË .˜…‹
ŇéŠéŒ› ˙Á̓ ËÍÁ˜‚…‹Á ŃÎËÍÁË̈́ ܛ™ÁÍ߅‹Ë ڟ ޟœˆ› ‚›Á ˟Ÿ‚›œ ҊŒ› ÁÍ
˙‚é(CSS) Cascading StyleSheet ËéœÁ߅˙› ŕ— ËÍÁË Ëß‡ß ‚Stylesheet ŢË͗
.ˌ‚ƒ XML ÚÍÁ˛ ÍË XSLT ‚Ÿ ˙›ŸË–

݂œ ŕƒ ˙™Ÿ‚• ÍË ÁÍ XML ĐÍߋ ß ËŸœ— ͜ ÁÍ ÍÁΕÁÝ͜ 4XST ÎÁ ŕ˂•…‹Á އ
˙é„é— xslt-demo.xslt ÜéŸ‚é• ÍË ÁÍ stylesheet ß .˟œ— ˙„— xslt-demo.xml
:˟œ— ËÍÁß ÁÍ ÍŸÎ Ţ‚›Í• Є‹ ß ËŸœ—

Python Process.py xslt-demo.xml xslt-demo.xslt

.ËË͘˙› È standard output ÍË ˙‡ß͊

.ݟÎÁË̈́˙› Stylesheet ɟ͌… ŕƒ š‚‰

ŕé— Ë韌‚ƒ ŕ…ŒÁË ŕ‡ß… ˟‚ƒ ޟœˆ› .ŋÁ á˂ XML ڟ ŹËŸœŸƒ˙› ŕ— ÍßԜ‚›
ĹÍßééééééééééééééƒ Namespace ÚééééŸ ŹËÍÁËéé霂ééé…ééé‹Á Ђééé‹Á Íéééƒ
Namespace Í鍂éœé .ËßéŒ˙é› ŘéŸÍ… http://www.w3.org/XSL/Transform/1.0
ËéœéÁßéŠ ĹéŸÁËé ÁÍ ŃÎÁË̈́ ˙‡ß͊ ß Ţ‚ŸÍ‡ ß ËœßŒ˙› ŕ…Š‚œŒ Í߅‹Ë ŢÁߜƒ
ŕËéŸé›‚éœ (Template Rules) Template ˏÁߖ ŕ— Template ĹÁÍ߅‹Ë ŕƒ .Ëߛœ
ÍË ŕ‚é˜ Íé ŕé— ËœŸß˜˙› ͘ŒÎÁË̈́ ŕƒ ËÁߖ ޟÁ .˟Œ‚ƒ ŕ…ŒÁË ŕ‡ß… ˜ߌ˙›
ŹËÍé— ˙› Ŗƒ‚Ô› ‚template ޟÁ ÎÁ ˙—Ÿ ‚ƒ ŕ— ËŒ ŕ‡Áߛ ˙…›‹– ‚ƒ XML ĐÍߋ
.˜— ş‚Í ÁÍ ËÁߖ ޟÁ ˟‚ƒ

:ݟœ—˙› ˙‹Í̓ ÁÍ template ޟ™ßÁ

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


ޅ› ݂›… ‚ƒ ˟‚ƒ ŕ— Ĺ‹Á ŢŔ ͘œ‚Ÿƒ ß ŕ— ËÍÁË ÁÍ "/" ÍÁ˖› match ͅ›Á͂„
ÍË ŕé— ËŒ‚ƒ˙› ނƒÎ ŕ˟ˆŸ„ ß Ň‚Š ˙ߘ™Á ڟ match Ĺ͂ƒ .Ë͟˜ ĹÍߍ Ŗƒ‚Ô›
‚‡œŸÁ ÍË ŹËœ—˙› Áˇ ݝ ÎÁ ÁÍ ‚ áÍ߅—ÍŸÁË Đ—ŸœßŸ ÍË ŕ— ŕœß˜œ‚› "/" ŢŔ
Ý‚éœ ‚éƒ Íééœé ÚéŸ Ü›‚Œ ÚͲ ܗ .˟‚›œ˙› ڟ—•… ͘ŸË—Ÿ ÎÁ ÁÍ ‚tag ݝ
.ËËÍé˜˙é› ŕ˂镅‹Á /document ÎÁ ͍œ ޟÁ ŢË͗ ҊŒ› ˙Á̓ ß Ĺ‹Á document
ĹÍßééééééƒ ÁÍéééœŔ ŕé— Ĺé‹Á ŘÁÍé˜ÁÍ‚é„ Ý‚éœéƒ áÍééœé ˙ß‚é‰ Document
Ëßé‡ß áÍ酌Ÿƒ Ü삋› ‚ß˜™Á ˙Á̓ ŕ…ƒ™Á .ݟË˙› ނŒœ /document/paragraph
.˜—˙› ş‚•— ‚‡œŸ› ‚… Ź‚› ܂†› ˙Á̓ ˙™ß ˜ÍÁË

ÍË ÁÍ ĹÁÍßé…é‹ËŹËéœé—˙é› ÁË韄 ÁÍ match Ź Stylesheet ͘ŒÎÁË̈́ ŕ—Ÿ›‚˜œ
͝ ß Ţ…› ŹŇ‚Š ß ÉŸÍ ĹÁÍ߅‹Ë ˙Á͇Á ‚ƒ .˟‚›œ˙› ŃÎÁË̈́ template Ă߈͂žˆ
Ń韂雜 ŕ‰• ˙ßÍ Íƒ ŹËœŒ‚ƒ ŕˌœ ؟͐… ś͕ ŢÁߜƒ template ÍË ŕ— á͍œ
‚éƒ Íé˜éŒÎÁËÍé„ ß .˜ߌ˙› ŕ…Š‚œŒ Literals ŢÁߜƒ ͍‚œ ޟÁ .Ëߌ˙› ŕËÁË
:˜—˙› ͂— ŕƒ Öß͌ ͟Πޟ›Á͕


<HTML>

 <HEAD>

  <TITLE>



‚éƒ instruction ‚éŸ ނé›Íé• .ËßéŒ˙› ŕœ‰ ËÍÁß instruction ͟˂–› ːƒ ß
ł鉚éԍÁ ނƒÎ ÎÁ ŕ— ÁÍ ˙ƒ‚Š…œÁ ˙‚ž…ƒ‹œ ˂•› select ͅ›Á͂„ ÎÁ ŕ˂•…‹Á
Ĺé‹Á ˙霂ƒÎ ÎÁ ˙™‚ ß ŘÍÁօ› ݟ՜… ڟ ŕ— Ëœ—˙› ˙ƒ‚ŸŃÎÍÁ ŹËŸ‚›œ˙› ˙ß͟„
Ĺé‹Á ŕ霂˜Áˇ ËÍÁ˜‚…‹Á ڟ ˙ÁÍÁË Ĺ‚‰šÔÁ ނƒÎ .ݟË͗ щ ŢŔ ŕ͂ƒÍË ŕ—
Íééœé ÜéŠÁË ÍË ÁÍ ŃÎÍÁ ޟÁ ˟œÁ߅˙› .ݟœÁߊ ˙› XPath ݂œƒ Á͜Á ‚› ŕ—
Îé—Íé›é… ŢŔ ˂•› ˙ßÍ Íœ ڟ ŃÎÍÁ XPath ł‰šÔÁ ÍË .˟œ— Á˟„ document
Re:Widget 404 Request ŢÁßéœé ‚éƒ ŕ陂é–é› ޟÁ ÍË Íœ ˂•› .ŋÁ ŕ…•‚Ÿ
ŕéƒ ß Ëé‹éŸßéœ˙é› ß ŕË͗ şÁ˝ ˙‡ß͊ ś‹ ŕƒ Á͜Ŕ XSLT ͘ŒÎÁË̈́ .ˌ‚ƒ˙›
instruction ÍÁËé–é› ŕéƒ ŕé— ˙éŸ‚é‡ ‚… ˝Ë˙› ŕ›ÁËÁ ‚Literal ŢË͗ Зœ›
:ݟÍÁË ‚› ޟÁ̓‚œƒ .ݟ‹Íƒ



<HTML>

 <HEAD>

  <TITLE>Re: Widget 404 Request</TITLE>

 </HEAD>

 <BODY>


apply-template Íßé…é‹Ë ŕéƒ Ë韂ƒ ‚› .ˌ‚ƒ˙› á͟˜ ܗŒ ܂‰ ÍË ‚› Ý͕ ܂‰
˙ÁÍÁË template ŢéŸÁ ˙é˜éœé‚雝 .ŋÁ ނƒÎ ŃÎÁË̈́ Ӄœ ß Î—Í› ޟÁ .ݟ‹Íƒ
˙‚éŕ郜‡ ŕ— Ëœ—˙› ˂‡ŸÁ context ڟ template ك‚Ô… .ŋÁ áËː…› ˙‚ŕƒœ‡
XML ĐÍßé‹ ˙‚é‡é— ÍË ŕé— Ëœ—˙› ޟŸ… Context ŕ› ÎÁ ͅ›ž› .ËÍÁË ˙œÁßÁ͕
Context ŹË韂›œ ˙› Ŗƒ‚Ô› ÚͲ ܗ ‚ƒ template ޟ…‹Šœ ŕ— ‚‡œŔ ÎÁ .ݟ…‹
context .Ë霗˙› á΂ƒ іœ ‚‡œŸÁ ЗߜŸ™ ݅‹Ÿ‹ ܟ‚• ŝ‚ƒŒ .Ëߌ˙› Ăߋ‰› ‚›
ŕéŸéƒéŒ áÍ‚é‡ áÍßé…é—ÍéŸÁË Źtemplate ޟ™ßÁ ÍË .ŋÁ á͂‡ áÍ߅—ÍŸÁË ŕŸƒŒ
ܟ‚• ˜œ‚› ŋÍË ŹContext ܊ÁË ÍË .ŋÁ (root directory) ˙™Á áÍ߅—ÍŸÁË
ÍË ŹŮ郂éÔé… ˙ÁÍéƒ ÁÍ Üé›‚é— ÍŸ‹› ŕ— Ĺ‹Ÿœ á΂Ÿœ ŕŒŸ› ŹĐ—ßœŸ™ ˙‚Ý…‹Ÿ‹
/document Ĺé–éŸé–é‰ ÍË document Źcontext ŢéŸÁ ÍË .ËéŸéœ— ҊŒ› template
˙雂é›é… ÍË ŕé— Ĺé‹Á ŢŔ ËéË˙é› Ý‚é‡éœÁ apply-template ŕ— á͂— .ˌ‚ƒ˙›
‚é› ˙é™éé• Context ‚éƒ ŕ— ÁÍ ˙Ÿ‚žŒÎÁË̈́ ˙›‚›… ß ŕË͗ ߛ…‹‡ ‚template
:ݟÎÁ˜Á˙› ˙‚˜œ áːƒ template ŕƒ Ü‚‰ .ËË Ý‚‡œÁ ŹËœ—˙› Ŗƒ‚Ô›

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


ĐÍߋ Éԋ ޟͅš‚ƒ ÍË ŕ— Ë߃ ˝Áߊ TITLE ݂œƒ ͍œ ڟ ˙߇…‹‡ ÍË Í˜ŒÎÁË̈́
.Ëßéƒ ËéÁß銜 ٕߛ ‚ß‡…‹‡ ͟‚‹ ˜œ‚› ‚› ˙߇…‹‡ ŕ…ƒ™Á .Ë߃ ˝Áߊ XML
ŕËé‚é– Ëéœéˆ XSLT żĹé•Í ËéÁßéŠ ŕéÔ閜 ÝÁ˗ƒ ŕԖœ ޟÁ ÎÁ ͘ŒÎÁË̈́ ܂‰
.ËÍÁË Ĺ–ƒ‚Ô› XML ĐÍߋ ‚ƒ ŕ— ËÍÁË ŕˌ ؟͐… built-in ß default template
ß ŕËßéƒ áÍ‚é‡ Context ÍË ŕ‰• ͍œ ޟͅš‚ƒ ËÍߛ ÍË ‚Ĺ–ƒ‚Ô› ޟÁ ÎÁ ˙—Ÿ
ޟÁ ÍË Íœ ڟ Ԗ• ‚‡œŸÁ ÍË .˜—˙› Á͇Á Á߅‰› ˙ßÍ Íƒ ÁÍ apply-template
Źbuilt-in ËéÁߖ ÎÁ ŕ˂•…‹Á ‚ƒ ͘ŒÎÁË̈́ ޟÁ̓‚œƒ .document :ˌ‚ƒ˙› Éԋ
܂閅œÁ document ͍œ ܉› ŕƒ Context ß Ë͗ ˝Áߊ Áˍ ÁÍ apply-template
.Ëߌ˙› ŕËÁË

áÍ‚é‡ Context ÍË Íééœé Ţ韙ßÁ .ŌÁË ËœÁߊ Ŗƒ‚Ô› template ޟ˜ˆ ܂‰
ŹĹéŒÁË ËéœéÁßéŠéœ Ĺé–郂ԛ ŢŔ ‚ƒ ‚template ÎÁ ڟˆŸ .ŋÁ description
apply-template ß Ë韂雜˙› ŕ˂•…‹Á built-in ˏÁߖ ÎÁ ͘ŒÎÁË̈́ ޟÁ̓‚œƒ
ÍË ŕé— ŕ鈜Ŕ .˜Î˙› Áˍ /document/description ĐÍËÁ ʼn… context ˙Á̓ ÁÍ
ÁÍ Ţ酛 ˙œ‚‹Ŕ ŕƒ Í˜ŸË built-in ŕˏ‚– ڟ .ŋÁ Memo ˌ‚ƒ˙› Ë߇ߛ Éԋ ޟÁ
ŕé— template ŢéŸé›ßË ‚éƒ ŕ— Ĺ‹Á title áːƒ ͍œ .Ë΂‹˙› Зœ› ˙‡ß͊ ŕƒ
ނéŒéœ ÁÍ Ţ‚é›Íé• template ޟÁ .ËÍÁË Ĺ–ƒ‚Ô› ݟÁŕËÁË É͌ ŢŔ ŕ͂ƒÍË
XML ĐÍßé‹ ‚éžéœé… Áˡ› .˜Î˙› Áˍ ÁÍ ŢÁ apply-template ÍË Ëƒ ß ËË˙›
Ђ‹Á ̓ ŕ— ËŒ‚ƒ˙› Re:widget 404 Request Ĺ͂ƒ /document/title ÍË Ë߇ߛ
.Ëߌ˙› Зœ› ˙‡ß͊ ŕƒ Ź˙™ŠÁË ËÁߖ


<HTML>

 <HEAD>

  <TITLE>Re: Widget 404 Request</TITLE>

 </HEAD>

 <BODY>Memo<H1>Re: Widget 404 Request</H1>


ÎÁ ‚é› Stylesheet ܂é†é› .Ë霌‚ƒ ˙•‚— Öß͌ ˙Á̓ ł‰ŸŽß… ޟÁ ŹÝŸÍÁß˟›Á
͍‚œ ˜œ‚› ݟÁŕË͗œ ˙…ƒ‰ ŢŔ ŕ͂ƒÍË Îߜ ŕ— ËŸ‚›œ˙› ŕ˂•…‹Á ˙Ÿ‚žŸ˜ĎŸß
˙ÁÍéƒ ˙é…éÍé• Î韜 ŕ™‚–› ޟÁ ÍË ŕ…ƒ™Á ß .‚instruction ˙‚attribute ß
ÉéŸéŽßé… ‚éžéœŔ ËÍߛ ÍË ŕ™‚–› ޟÁ ÍË ŕ— ˙›Ÿ‚•› .ËÍÁ˜ Ëß‡ß ‚žœŔ ɟŽß…
XSLT ÍË Context ß (expression) Ĺ͂éƒé Ź(pattern) ߘ™Á templateŹ ŹÝËÁË
ŕéŸé–éƒ ŕéƒ ‚œŸ–Ÿ ŹËŸœ— ܂ƒœË ÁÍ ‚žœŔ ͘Á ŕ…ƒ™Á ß .˜Œ‚ƒ˙› ˙…‚Ÿ‰ ß Ýž›
ъƒ ÍË ŕ— Íƒ‚… ˟‡ ŕ…Œßœ XSLT ÎߛŔËߊ .Ë̓ ˟Áߊ ˙„ Ϝ XSLT łßŽß›
˙é›éŸËé– Źŕ陂é–é› ޟÁ ŕŸž… ނ›Î ÍË ˙…‰ ŕ— ËœˆÍ Źŕ˟Ë͘ ÇÍË Resources
ޟÁ ÍË ˙›— ŕœŸÎ Ř͍ ‚ƒ .Ë߃ ˝Áߊ ‚›Œ ˙Á̓ ˙ƒßŠ Öß͌ ŕԖœ ˙™ß ŹËŒ‚ƒ˙›
ŃéŠéƒ ÍË ŕËéŒ Íé—Ě ‘郂éœé› ŕ™‚Ô› ‚ƒ ‚ƒ ÁÍ ÝΚ ˙‚ ŃÎߛŔ ˟œÁ߅˙› ŕÁÍ
.˟œÍÁ̘ƒ Resources



ŕ‡Ÿ…œ
ÁÍ ÝΚ łšÔÁ ݟËߛœ ˙‹ ß ÝŸË͗ ŢÁߜ ŕ™‚–› ޟÁ ÍË ÁÍ á˂ŸÎ ˙‚ ŕœŸ›Î
ܛ‚ ݅‹Ÿ‹ ÍË XML ÎÁ ˙™› ŕ˂•…‹Á ‚ƒ ß ËŸË‡ ˙ěߙߜ—… ٖ ‚ƒ ˙Ÿ‚œŒŔ އ
ÍË ÁÍ áÍé…éŒéŸƒ ˙™› łŸƒÍ‡… áːƒ ˙‚ž…›‹– ÍË .ݟ삛œ ŕěÁÍÁ ‚›Œƒ ЗߜŸ™
.Ëߛœ ˟Áߊ ˗ ŕœŸ›Î ޟÁ

˙‚éÍÁΕÁÝ͜ ˙™Á ŕ™ě‹› ŕ— ÝÁŕËߛœœ ŕ͂ŒÁ ‚‡œŸÁ ÍË ŕ™ě‹› ßË ŕƒ Ţ› ‚œ›Ž
ŢÁ߅˙› ß ËœŸ‚›œ˙› ܟ›—… ͎‚‰ ܂‰ ÍË ÁÍ ŕÔ߃͛ ˙‚˙Ďߙߜ—… ŕ— Ĺ‹Á ˙—ˆß—
˙ßÍ Ţé› Ĺ—ÍŒ ‚Ÿœ‚† ß .Ëߛœ ŕ‚ŒÁ Á͜Ŕ ЗߜŸ™ ʼn… XML ŕƒ ˙™› ËŸË ÚŸ ‚ƒ
ß Ëéœé—˙é› Í‚é— ËßéŒ˙› ŕŽÍ Open-source ĹÍߍƒ ŕ— Python Xlink ͘ŒÎÁË̈́
ŕ镂éŽÁ ŕ霟›Î ޟÁ ÍË ÁÍ Ĺ‚–Ÿ–‰… ŕœß˜ ͝ Áːƒ .˟‚›œ ˙› ˙‹Í̓ ÁÍ ‚ž‰ÍÔ
˙阜ߘˆ ß Đ—ßœŸ™ ÍË XML ŕ˂•…‹Á ŕ߉œ ŕƒ ŕ— Ý˜›ßÎÍŔ ŕ…ƒ™Á ß Ëߛœ ݝÁߊ
.݃‚Ÿ ˙‚˜Ŕ ނŸÍ…Œ› ԋ߅ ÁÍ ˙Ďߙߜ—… ĹÁ͆Á ß ÍÁ΃Á ÎÁ ŕ˂•…‹Á





ŕ˜‹Ÿßœ ˙•͐›
Ĺé—ÍŒ ڟ ŕ— ËŒ‚ƒ˙› FourThought LLC ŕ˜œ— ۜ‚› ß Í߂Œ› ڟ Uche Ogbuji
‚éßééŠé› ß ˙é…é—ÍéŒ ˙‚éŕ雂éœÍƒ ß ÍÁΕÁÝ͜ ŕ‹ß… ÍË ŇŠ… ‚ƒ ˙…Í߂Œ›
.ˌ‚ƒ˙› ԋ߅› Éßԋ ÍË ‚Ÿ ß Úˆß— ˙ Ĺ͂‡… ˙Á̓
web-based integration



Resources
"There is more to XML than roll-your-own HTML," Uche Ogbuji (LinuxWorld, March 1999): http://www.linuxworld.com/linuxworld/lw-1999-03/lw-03-xml.html
The Cocoon project: http://java.apache.org/cocoon
Freshmeat: http://freshmeat.net
A tutorial on namespaces in XML: http://www.jclark.com/xml/xmlns.htm
libxml, a general Linux/Unix library for XML: http://rufus.w3.org/veillard/XML/
XML package for Python: http://www.python.org/sigs/xml-sig/
libxml-perl, a collection of Perl tools for XML processing: http://bitsko.slc.ut.us/libxml-perl/
FourThought's XSLT processor: http://opentechnology.org/4Suite/4XSLT/
James Clark's XT XSLT processor: http://www.jclark.com/xml/xt.html
XSLT processor from IBM's laudable alphaWork's project: http://www.alphaworks.ibm.com/formula/LotusXSL
James Tauber's XSLT tutorial: http://www.xmlsoftware.com/articles/xsl-by-example.html
Commercial training materials for XSLT and XPath: http://www.CraneSoftwrights.com/training


˙‡œ‹Í՜
ޟÁ ËÍߛ ÍË ÁÍ Ëߊ Í՜
:˟Ÿß˜ƒ ‚› ŕƒ Ă™Ô›

ŃÎÍÁ ‚ƒ ˙™ŸŠ -
ŃÎÍÁ ‚ƒ -
ŃÎÍÁ˙ƒ -

˙œ šßÔ ˙™ŸŠ -
˂œ› -
ŕ‚…ß— -

˙Š… ˙™ŸŠ -
Ăߙԛ -
ŋŸœ ˙Š… ˙•‚— ŕÎÁ˜Á ŕƒ -


:݂œ

:ڟœßͅ—™Á ŋ„

: ŗ͌ ݂œ








Copyright 2001, LinuxWorld / IDG Corp. / PC WORLD Iran. All rights reserved.