...
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:datepackage 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
ΠΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°
ΠΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ Π·Π°Π΄Π°ΡΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°Π»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ β ΡΡΠΎ Π±ΡΠ»Π° ΡΠ° ΡΠ°ΠΌΠ°Ρ Π·Π°Π΄Π°ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²ΠΈΠ΄Π°.