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

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

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

format-number(123456789.0123,'0000,000,00') β†’ '1,23,45,67,89'

Дробная Ρ‡Π°ΡΡ‚ΡŒ числа, прСдставлСнная Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ NFFraction, начинаСтся символом-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Ρ†Π΅Π»ΠΎΠΉ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части NFFractionDelim (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "."), продолТаСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ символов ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Ρ†ΠΈΡ„Ρ€ NFReqDigit ΠΈ заканчиваСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ символов Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ NFOptDigit:

[NF 6] NFFraction ::= NFFractionDelim NFReqDigit* NFOptDigit*

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

format-number(1234.567,'#.00') β†’ '1234.57'

format-number(1234.567,'#.00#') β†’ '1234.567'

format-number(1234.567,'#.0000') β†’ '1234.5670'

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ NFChar, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°ΡΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ прСфикса (NFPrefix) ΠΈ суффикса (NFSuffix), ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ символы:

[NF 7] NFChar ::= (Char - NFSymbol)

К ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ символам относятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

β–‘ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "0");

β–‘ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "#");

β–‘ ΡΠΈΠΌΠ²ΠΎΠ»-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² форматирования для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ";");

β–‘ ΡΠΈΠΌΠ²ΠΎΠ»-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Ρ†Π΅Π»ΠΎΠΉ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ".");

β–‘ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "%").

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ:

[NF 8] NFSymbol           ::= NFReqDigit

                              | NFOptDigit

                              | NFSubpatternDelim

                              | NFFractionDelim

                              | NFGroupDelim

                              | NFPercent

[NF 9] NFReqDigit         ::= '0'

[NF 10] NFOptDigit        ::= '#'

[NF 11] NFSubpatternDelim ::= ';'

[NF 12] NFFractionDelim   ::= '.'

[NF 13] NFGroupDelim      ::= ','

[NF 14] NFPercent         ::= '%'

БинтаксичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандартными. Они ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ синтаксис ΠΎΠ±Ρ€Π°Π·Ρ†Π° форматирования, Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ строгими, Ρ‡Π΅ΠΌ опрСдСлСния Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ языка Java.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:decimal-format

Бинтаксис элСмСнта Π·Π°Π΄Π°Π½ конструкциСй Π²ΠΈΠ΄Π°:

<xsl:decimal-format

 name="имя"

 decimal-separator="символ"

 grouping-separator="символ"

 infinity="строка"

 minus-sign="символ"

 NaN="строка"

 percent="символ"

 per-mille="символ"

 zero-digit="символ"

 digit="символ"

 pattern-sΠ΅Ρ€Π°rator="символ"/>

XSLT позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки. Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ‚Π°ΠΊΠΈΡ… символов ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ называСтся дСсятичным Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΈ опрСдСляСтся элСмСнтом xsl:decimal-format. ΠžΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² этого элСмСнта зависит, ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ символы ΠΎΠ±Ρ€Π°Π·Ρ†Π° форматирования ΠΈ ΠΊΠ°ΠΊ число Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅:

Атрибут name элСмСнта xsl:decimal-format Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя дСсятичного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Если имя Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ элСмСнт xsl:decimal-format опрСдСляСт дСсятичный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ строкового прСдставлСния числа ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

β–‘ decimal-separator β€” Π·Π°Π΄Π°Π΅Ρ‚ символ, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π»ΡƒΡŽ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ части числа. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ ".", с Unicode-ΠΊΠΎΠ΄ΠΎΠΌ #x2e. Атрибут decimal-separator рассматриваСтся ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ ΠΎΠ±Ρ€Π°Π·Ρ†Π° форматирования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ символ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅;

β–‘ grouping-separator β€” Π·Π°Π΄Π°Π΅Ρ‚ символ, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² Ρ†Π΅Π»ΠΎΠΉ части записи числа. Π’Π°ΠΊΠΈΠ΅ символы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ тысяч ("1,234,567.89"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ ",", ΠΊΠΎΠ΄ #x2c. grouping-separator рассматриваСтся ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ ΠΎΠ±Ρ€Π°Π·Ρ†Π° форматирования. Помимо этого, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ символ Π³Ρ€ΡƒΠΏΠΏ Ρ†ΠΈΡ„Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ числа;

β–‘ percent β€” Π·Π°Π΄Π°Π΅Ρ‚ символ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ "%", ΠΊΠΎΠ΄ #x25. Π­Ρ‚ΠΎΡ‚ символ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ±Ρ€Π°Π·Ρ†Π΅ форматирования ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅;

β–‘ per-mille β€” Π·Π°Π΄Π°Π΅Ρ‚ символ ΠΏΡ€ΠΎΠΌΠΈΠ»Π»Π΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ "‰", ΠΊΠΎΠ΄ #Ρ…2030. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΡ€ΠΎΠΌΠΈΠ»Π»Π΅ распознаСтся Π² ΠΎΠ±Ρ€Π°Π·Ρ†Π΅ форматирования ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² строковом прСдставлСнии числа;

β–‘ zero-digit β€” Π·Π°Π΄Π°Π΅Ρ‚ символ нуля. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ "0", ΠΊΠΎΠ΄ #x30;. Π’ качСствС Ρ†ΠΈΡ„Ρ€ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ числа Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ символ нуля ΠΈ 9 символов, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° Π½ΠΈΠΌ. Π‘ΠΈΠΌΠ²ΠΎΠ» нуля распознаСтся Π² ΠΎΠ±Ρ€Π°Π·Ρ†Π΅ форматирования ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ строкового прСдставлСния числа;

β–‘ digit β€” опрСдСляСт символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π·Ρ†Π΅ форматирования для опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ символа. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ "#". Π­Ρ‚ΠΎΡ‚ символ распознаСтся ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ символ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹. Он Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² строковоС прСдставлСниС числа;

β–‘ pattern-separator β€” опрСдСляСт символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π·Ρ†Π΅ форматирования для раздСлСния ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² числа. Он Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² строковоС прСдставлСниС числа. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ ";";

β–‘ infinity β€” Π·Π°Π΄Π°Π΅Ρ‚ строку, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся строка "Infinity";

β–‘ NaN β€” Π·Π°Π΄Π°Π΅Ρ‚ строку, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅-числа. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся строка "NaN";

β–‘ minus-sign β€” Π·Π°Π΄Π°Π΅Ρ‚ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обозначСния ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся символ "-", ΠΊΠΎΠ΄ #x2D.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:decimal-format Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла Π±Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ format-number. ВсС, Π½Π° Ρ‡Ρ‚ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ β€” это Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ чисСл Π² строку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ format-number.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСсятичного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:

<xsl:decimal-format

 name="format1"

 decimal-separator=","

 minus-sign="N"

 grouping-separator=":"

 infinity="&#x221E;"

 NaN="not-a-number"

 percent="%"

 digit="$"

 pattern-separator="|"/>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ format-number:

format-number(123456.78, '$,0000', 'format1) β†’ '123456,7800'

format-number(-123456.78, '$,00$$', 'format1') β†’ 'N123456,78'

format-number(123456.78, '$,0000|$,0000-', 'format1') β†’ '123456,7800'

format-number(-123456.78, '$,00001$,0000-', 'format1') β†’ '123456,7800-'

format-number(-123456.78, '000:000:000,00$$', 'format1') β†’ 'N000:123:456,78'

format-number('zero', '000:000:000,00$$', 'format1') -> 'not-a-number'

format-number(1 div 0, '$,$', 'format1') β†’ '∞'

format-number(-1 div 0, '$,$', 'format1') β†’ 'N∞'

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСсятичного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:

<xsl:decimal-format name="format2" zero-digit="/"/>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ format-number:

format-number(123456789, '#', 'format2') β†’ '012345678'

format-number(123456789, '#') β†’ '123456780'

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСсятичного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:

<xsl:decimal-format name="format3" zero-digit="1"/>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ format-number:

format-number(123456789, '#', 'format3') β†’ '23456789:'

format-number(12345.06789, '#.#####', 'format3') β†’ '23456.1789:'

ДСсятичный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, опрСдСляСмый элСмСнтом xsl:decimal-format, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² прСобразованиях со ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ порядком ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ xsl:decimal-format Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ дСсятичныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° значСния ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚).

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ XSLT-процСссоры Π΄ΠΎΠ»ΠΆΠ½Ρ‹ лишь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ логичСскиС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов.

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

Бинтаксис этого элСмСнта ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

<xsl:output

 method = "xml" | "html" | "text" | "имя"

 version = "Ρ‚ΠΎΠΊΠ΅Π½"

 encoding = "строка"

 omit-xml-declaration = "yes" | "no"

 standalone = "yes" | "no"

 doctype-public = "строка"

 doctype-system = "строка"

 cdata-section-elements = "ΠΈΠΌΠ΅Π½Π°"

 indent = "yes" | "no"

 media-type = "строка"/>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня xsl:output позволяСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ.

Π“Π»Π°Π²Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ элСмСнта xsl:output являСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ method, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС имя, Π½ΠΎ ΠΏΡ€ΠΈ этом тСхничСская рСкомСндация XSLT опрСдСляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π° β€” "xml", "html" ΠΈ "text". Π’ Ρ‚ΠΎΠΌ случаС, Ссли процСссор ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСстандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π°, Π΅Π³ΠΎ рСализация ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ зависит ΠΎΡ‚ производитСля.