changes.xsls 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. X:stylesheet {
  2. X:output method="text";
  3. X:param lang="'en'";
  4. X:param configuration="'../xml/change_log_conf.xml'";
  5. X:var conf = "document($configuration)/configuration";
  6. X:var start = "$conf/start";
  7. X:var indent = "$conf/indent";
  8. X:var max = "$conf/length";
  9. X:var br = {<br>}
  10. X:template = "/" { !! "change_log"; }
  11. X:template = "change_log" { !! "changes"; }
  12. X:template = "changes" {
  13. X:text {
}
  14. !{substring(concat($conf/changes[@lang=$lang]/title,
  15. //change_log/@title,
  16. ' ', @ver,
  17. ' '),
  18. 1, $conf/changes[@lang=$lang]/length)}
  19. X:if "$lang='ru'" {
  20. !{substring(@date, 9, 2)}
  21. X:text {.}
  22. !{substring(@date, 6, 2)}
  23. X:text {.}
  24. !{substring(@date, 1, 4)}
  25. }
  26. X:if "$lang='en'" {
  27. !{substring(@date, 9, 2)}
  28. !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
  29. 6, 2))]}
  30. !{substring(@date, 1, 4)}
  31. }
  32. X:text {
}
  33. !! "change";
  34. X:text {
}
  35. }
  36. X:template = "change" {
  37. X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]"
  38. X:var postfix = { X:if "$prefix" { X:text {: } } }
  39. !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)");
  40. }
  41. X:template para(prefix) = "para" {
  42. X:var text = { !!; }
  43. X:text {
}
  44. !wrap(text = "normalize-space($text)",
  45. prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } })
  46. }
  47. X:template wrap(text, prefix) {
  48. X:if "$text" {
  49. X:var offset = {
  50. X:choose {
  51. X:when "starts-with($text, concat($br, ' '))" {
  52. !{string-length($br) + 2}
  53. }
  54. X:when "starts-with($text, $br)" {
  55. !{string-length($br) + 1}
  56. }
  57. X:otherwise {
  58. 1
  59. }
  60. }
  61. }
  62. X:var length = {
  63. !length(text = "substring($text, $offset)",
  64. prefix = "string-length($prefix)",
  65. length = "$max")
  66. }
  67. !{$prefix}
  68. !{normalize-space(translate(substring($text, $offset, $length),
  69. ' ', ' '))}
  70. X:text {
}
  71. !wrap(text = "substring($text, $length + $offset)", prefix = "$indent")
  72. }
  73. }
  74. X:template length(text, prefix, length) {
  75. X:var break = "substring-before(substring($text, 1,
  76. $length - $prefix + string-length($br)),
  77. $br)"
  78. X:choose {
  79. X:when "$break" { !{string-length($break)} }
  80. X:when "$length = 0" { !{$max - $prefix} }
  81. X:when "string-length($text) + $prefix <= $length" {
  82. !{$length - $prefix}
  83. }
  84. X:when "substring($text, $length - $prefix + 1, 1) = ' '" {
  85. !{$length - $prefix + 1}
  86. }
  87. X:otherwise {
  88. !length(text = "$text", prefix = "$prefix", length = "$length - 1")
  89. }
  90. }
  91. }
  92. X:template = "at" {@}
  93. X:template = "br" { !{$br} }
  94. X:template = "nobr" { !{translate(., ' ', ' ')} }
  95. }