Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВСхнология XSLTΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 84

Автор АлСксСй Π’Π°Π»ΠΈΠΊΠΎΠ²

<A>

 <B>

  <C/>

 </B>

 <C>

  <B/>

 </C>

</A>

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ остороТными ΠΏΡ€ΠΈ использовании indent="yes" Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π² содСрТимом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π˜Π½Π΄Π΅Π½Ρ‚Π°Ρ†ΠΈΡ позволяСт процСссору ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΏΠΎ собствСнному ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Π’ случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ восприняты Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ½Π΄Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Атрибут cdata-section-elements

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти тСкстовоС содСрТимоС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов Π² Π²ΠΈΠ΄Π΅ сСкций CDATA, XSLT ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ простой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” слСдуСт лишь ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ cdata-section-elements элСмСнта xsl:output элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ сСкции ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг 8.41. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page>&lt;br/&gt;<br/></page>

Листинг 8.42. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:output

  indent="yes"

  cdata-section-elements="page"/>


 <xsl:template match="/">

  <xsl:copy-of select="/"/>

 </xsl:template>


</xsl:stylesheet>

Листинг 8.43. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page><![CDATA[<br/>]]><br/>

</page>

Π’ соотвСтствии с синтаксисом XML, сСкции CDATA Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов "]]>". ΠŸΠΎΡ‚ΠΎΠΌΡƒ, встрСтив Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π² тСкстС элСмСнта, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² cdata-section-elements, процСссор Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Π΅Π΅ двумя сСкциями CDATA. Одна Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ "]]", вторая – ">".

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг 8.44. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page>

 <data>]]&gt;</data>

 <pre>&lt;!-- Comment --></pre>

</page>

Листинг 8.45. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:output

 indent="yes"

 cdata-section-elements="data pre"/>


 <xsl:template match="/">

  <xsl:copy-of select="/"/>

 </xsl:template>


</xsl:stylesheet>

Листинг 8.46. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page>

 <data><![CDATA[]]]]><![CDATA[>]]></data>

 <pre><![CDATA[<!-- Comment -->]]></pre>

</page>

Атрибут doctype-system

Для опрСдСлСния логичСской структуры Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ DTD β€” опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² содСрТатся Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π²ΠΈΠ΄Π΅ систСмных ΠΈΠ»ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

XSLT позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ссылки Π½Π° внСшниС опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° doctype-system элСмСнта xsl:output.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создаСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, логичСская схСма ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π²ΠΎ внСшнСм Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎ адрСсу "/dtds/document.dtd". Π’ΠΎΠ³Π΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ элСмСнт xsl:output с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ doctype-system, Ρ€Π°Π²Π½Ρ‹ΠΌ "/dtds/document.dtd", ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π² Π²ΠΈΠ΄Π΅

<!DOCTYPE элСмСнт SYSTEM "/dtds/document.dtd">

Π³Π΄Π΅ элСмСнт β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт выходящСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Листинг 8.47. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page> content </page>

Листинг 8.48. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:output indent="yes" doctype-system="/dtds/document.dtd"/>

 <xsl:template match="/"><xsl:copy-of select="/"/></xsl: template>

</xsl:stylesheet>

Листинг 8.49. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE page SYSTEM "/dtds/document.dtd">

<page> content </page>

Атрибут doctype-public

Если Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ doctype-system элСмСнта xsl:output Π·Π°Π΄Π°Π½ΠΎ внСшнСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ логичСского Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ указываСтся Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ doctype-public элСмСнта xsl:output. Π•Π³ΠΎ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ продСмонстрировано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

Листинг 8.50. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page> content </page>

Листинг 8.51. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:output indent="yes"

  doctype-system="/dtds/document.dtd"

  doctype-public="-//Document//Description" />


 <xsl:template match="/"><xsl:copy-of select="/"/></xsl:template>


</xsl:stylesheet>

Листинг 8.52. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE page

 PUBLIC "-//Document//Description" "/dtds/document.dtd">

<page> content </page>

Атрибут media-type

Атрибут media-type позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°-Ρ‚ΠΈΠΏ содСрТимого выходящСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π° "xml" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ media-type ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся "text/xml". НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ media-type Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° содСрТимоС самого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, XSLT-процСссоры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° сторонС сСрвСра, ΠΌΠΎΠ³ΡƒΡ‚ Π² зависимости ΠΎΡ‚ значСния этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ MIME-Ρ‚ΠΈΠΏ исходящих Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ использовании, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠ°ΠΊ HTTP.

Атрибут omit-xml-declaration

XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ ΠΈ Π±Π΅Π· Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ XML. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ XSLT позволяСт ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эту Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, для Ρ‡Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° omit-xml-declaration Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ присвоСно "yes":

<xsl:output

 omit-xml-declaration="yes"/>

Π’ случаС Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° omit-xml-declaration ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ Ρ€Π°Π²Π½ΠΎ "yes", процСссор Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ XML, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вСрсии (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "1.0") ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "utf-8" ΠΈΠ»ΠΈ "utf-16" Π² зависимости ΠΎΡ‚ процСссора).

Атрибут standalone

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (standalone ΠΈΠ»ΠΈ non-standalone соотвСтствСнно), слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ standalone элСмСнта xsl:output. Если этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² xsl:output, Ρ‚ΠΎ процСссор Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ XML объявлСниС standalone с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ standalone Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, объявлСниС standalone Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ XML выходящСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° "html"

Π’ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΌ состоянии языки XML ΠΈ HTML сильно ΠΏΠΎΡ…ΠΎΠΆΠΈ синтаксичСски, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ довольно вСсомыС различия. ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° "html" ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ понятСн Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ².

Одно ΠΈΠ· основных Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ HTML ΠΈ XML состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² XML пустыС элСмСнты ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ <имя/>, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² HTML Ρ‚ΠΎΡ‚ ΠΆΠ΅ элСмСнт Π±Ρ‹Π» Π±Ρ‹ Π²Ρ‹Π²Π΅Π΄Π΅Π½, ΠΊΠ°ΠΊ <имя> β€” Π±Π΅Π· косой Ρ‡Π΅Ρ€Ρ‚Ρ‹. ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° "html" ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ эти различия ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅Π³ΠΈ пустых элСмСнтов HTML Π±Π΅Π· косой Ρ‡Π΅Ρ€Ρ‚Ρ‹ послС ΠΈΠΌΠ΅Π½ΠΈ. Π’ соотвСтствии с тСхничСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ языка HTML 4.0, пустыми элСмСнтами ΡΠ²Π»ΡΡŽΡ‚ΡΡ area, base, basefont, br, col, frame, hr, img, input, isindex, link, meta ΠΈ param.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг 8.53. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="utf-8"?>

<page>

 <title>I'm just a simple page...</title>

 <content>I've got a simple content</content>

</page>

Листинг 8.54. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

 <xsl:stylesheet

  version="1.0"

  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:output indent="yes" method="html"/>


 <xsl:template match="/page">

  <html>

   <head>

    <title>

     <xsl:value-of select="title"/>

    </title>

   </head>

   <body>

    Welcome!<br/>

    Be our guest! <HR/>

    <xsl:value-of select="content"/>

   </body>

  </html>

 </xsl:template>


</xsl:stylesheet>

Листинг 8.55. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<html>

 <head>