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

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

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

 ...

 extension-element-prefixes="ext">

 ...

</xsl:stylesheet>

Π’ ΠΈΡ‚ΠΎΠ³Π΅ нашС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

Листинг 10.19. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ элСмСнт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

<xsl:stylesheet

 version="1.0"

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

 xmlns:ext="xalan://de.fzi.xslt.ext"

 extension-element-prefixes="ext">


 <xsl:template match="/">

  <!-- ... -->

 

This page was generated at <ext:time/>.

 </xsl:template>


</xsl:stylesheet>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого прСобразования Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΈΠ΄Π°:

This page was generated at 11:56.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ элСмСнта Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π°. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнт ext:date, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈΠ»ΠΈ врСмя Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, зависящСм ΠΎΡ‚ значСния Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° pattern.

Листинг 10.20. Класс ext.java рСализация элСмСнта ext:date

package de.fzi.xslt;


import java.util.Date;

import java.text.SimpleDateFormat;

import org.apache.xalan.extensions.XSLProcessorContext;

import org.apache.xalan.templates.ElemExtensionCall;


public class ext{

 public String date(XSLProcessorContext context, ElemExtensionCall elem) {

  SimpleDateFormat df;


  // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° pattern элСмСнта Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

  String pattern = elem.getAttribute("pattern");

  // Если Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ pattern Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½,

  // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† форматирования, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

  if (pattern == null)

   df = new SimpleDateFormat();

  // Если Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ pattern ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

  // Π² качСствС ΠΎΠ±Ρ€Π°Π·Ρ†Π° форматирования

  else

   df = new SimpleDateFormat(pattern);

  return df.format(new Date());

 }

}

Π’ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ этот элСмСнт ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ:

This page was generated at <ext:date pattern="HH:mm"/> on

<ext:date pattern="dd/MM/yyyy"/>.

ΠΈΠ»ΠΈ:

This page was generated on <ext:date/>.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚:

This page was generated at 12:11 on 08/10/2001.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ:

This page was generated on 08.10.01 12:11.

ЕстСствСнно, сСмантика элСмСнтов Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ ограничиваСтся простым ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, лишь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠŸΡ€ΠΈ этом элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎ Π²ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² структуру самого прСобразования, вСдь ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΡ… использования Π½Π΅ сильно отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° использования самих элСмСнтов XSLT.

Ѐункция element-available

boolean element-available(string)

Ѐункция element-available ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ function-available: ΠΎΠ½Π° слуТит для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ элСмСнта. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ element-available Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя элСмСнта; функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли элСмСнт с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ доступСн, false β€” Ссли Π½Π΅Ρ‚.

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, созданноС Π½Π°ΠΌΠΈ для процСссора Xalan с использованиСм элСмСнта Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ext:date, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ процСссорС. Π’ этом случаС Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вслСдствиС нСсовмСстимости ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой β€” "Ρ‡ΡƒΠΆΠΎΠΉ" процСссор просто Π½Π΅ смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ элСмСнт ext:date.

Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ этого, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ element-available для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности элСмСнта ext:date Π΄ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

Листинг 10.21. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ element-available

<xsl:stylesheet

 version="1.0"

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

 xmlns:ext="xalan://de.fzi.xslt.ext"

 extension-element-prefixes="ext">


 <xsl:template match="/">

  <result>

   <xsl:if test="element-available('ext:date')">

   

This page was generated at <ext:date pattern="HH:mm"/> on <ext:date pattern="dd/MM/yyyy"/>.

   </xsl:if>

  </result>

 </xsl:template>

</xsl:stylesheet>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:fallback

Π”Ρ€ΡƒΠ³ΠΈΠΌ способом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, связанных с Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ элСмСнт прСобразования, являСтся использованиС элСмСнта xsl:fallback. БинтаксичСская конструкция этого элСмСнта ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

<xsl:fallback>

 <!-- Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅: шаблон -->

</xsl:fallback>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:fallback Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² "ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ" ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСизвСстСн процСссору. Π’ случаС, Ссли критичСская инструкция отрабатываСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, содСрТимоС xsl:fallback попросту игнорируСтся. Π˜Π½Π°Ρ‡Π΅, Ссли процСссор Π² силу Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, вмСсто Π½Π΅Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ содСрТимоС Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта xsl:fallback.

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

На Ρ‚ΠΎΡ‚ случай, Ссли процСссор Π½Π΅ смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ наш элСмСнт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ext:date, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ "ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Ρ‚ΡŒ" Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

<ext:date pattern="HH:mm">

 <xsl:fallback>unknown time</xsl:fallback>

</ext:date>

Π’ этом случаС шаблон

<xsl:template match="/">

 <!-- ... -->

 

This page was generated at <ext:date pattern="HH:yy">

  <xsl:fallback>unknown time</xsl:fallback>

 </ext:date>.

</xsl:template>

Π² случаС нСвозмоТности Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ext:date Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚

This page was generated at unknown time.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ xsl:fallback ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, связанных с элСмСнтами Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Наборы доступных процСссору элСмСнтов XSLT Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ вСрсии ΠΊ вСрсии, ΠΈ xsl:fallback Π²ΠΏΠΎΠ»Π½Π΅ пригодится для обСспСчСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. НапримСр, Ссли Π² вСрсии XSLT 2.0 Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ элСмСнт xsl:for-each-group, Ρ‚ΠΎ xsl:fallback ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° для процСссоров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ:

<xsl:for-each-group select="item" group-by="@number">

 <!-- ... -->

 <xsl:fallback>

  <xsl:for-each select="item[generate-id(.)=

   generate-id(key('item', @number))]">

   <!-- ... -->

  </xsl:for-each>

 </xsl:fallback>

</xsl:for-each>

Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π° EXSLT

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ с Π»ΠΈΡ…Π²ΠΎΠΉ Π²ΠΎΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ языков XSLT ΠΈ XPath, прСдоставляя возмоТности ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ стандартны β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, разобранная Π²Ρ‹ΡˆΠ΅ функция nodeset, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх XSLT-процСссорах.

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

Для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ EXSLT β€” это мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с сайта http://www.exslt.org. Помимо этого, EXSLT-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΡƒΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ встроСнными для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… процСссоров. НапримСр, Π² процСссорС Saxon Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ элСмСнтов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ EXSLT.

На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… EXSLT Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

β–‘ Common β€” ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exslt:node-set ΠΈ exslt:object-type ΠΈ элСмСнт exslt:document.

β–‘ Math β€” матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

β–‘ Sets β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с мноТСствами ΡƒΠ·Π»ΠΎΠ² (ΠΊΠ°ΠΊ-Ρ‚ΠΎ: пСрСсСчСниС, Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅).

β–‘ Functions β€” элСмСнты для опрСдСлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

β–‘ Dates and Times β€” элСмСнты ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

β–‘ Strings β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками.

β–‘ Regular Expressions β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгулярными выраТСниями.

EXSLT ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ стандартных Π·Π°Π΄Π°Ρ‡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ β€” поэтому, ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ собствСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ β€” Π½Π΅Ρ‚ Π»ΠΈ ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ EXSLT ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ программирования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

Π“Π»Π°Π²Π° 11

Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°

ΠœΡ‹ ΡƒΠΆΠ΅ рассматривали Π·Π°Π΄Π°Ρ‡Ρƒ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π»ΠΈ устройство ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ β€” это Π±Ρ‹Π»Π° Ρ‚Π° самая Π·Π°Π΄Π°Ρ‡Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΈΠ΄Π°.