changes.xsls 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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'" { !{@date} }
  20. X:if "$lang='en'" {
  21. !{substring(@date, 1, 2)}
  22. !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
  23. 4, 2))]}
  24. !{substring(@date, 7, 4)}
  25. }
  26. X:text {
}
  27. !! "change";
  28. X:text {
}
  29. }
  30. X:template = "change" {
  31. X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]"
  32. X:var postfix = { X:if "$prefix" { X:text {: } } }
  33. !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)");
  34. }
  35. X:template para(prefix) = "para" {
  36. X:var text = { !!; }
  37. X:text {
}
  38. !wrap(text = "normalize-space($text)",
  39. prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } })
  40. }
  41. X:template wrap(text, prefix) {
  42. X:if "$text" {
  43. X:var offset = {
  44. X:choose {
  45. X:when "starts-with($text, concat($br, ' '))" {
  46. !{string-length($br) + 2}
  47. }
  48. X:when "starts-with($text, $br)" {
  49. !{string-length($br) + 1}
  50. }
  51. X:otherwise {
  52. 1
  53. }
  54. }
  55. }
  56. X:var length = {
  57. !length(text = "substring($text, $offset)",
  58. prefix = "string-length($prefix)",
  59. length = "$max")
  60. }
  61. !{$prefix}
  62. !{normalize-space(translate(substring($text, $offset, $length),
  63. ' ', ' '))}
  64. X:text {
}
  65. !wrap(text = "substring($text, $length + $offset)", prefix = "$indent")
  66. }
  67. }
  68. X:template length(text, prefix, length) {
  69. X:var break = "substring-before(substring($text, 1,
  70. $length - $prefix + string-length($br)),
  71. $br)"
  72. X:choose {
  73. X:when "$break" { !{string-length($break)} }
  74. X:when "$length = 0" { !{$max - $prefix} }
  75. X:when "string-length($text) + $prefix <= $length" {
  76. !{$length - $prefix}
  77. }
  78. X:when "substring($text, $length - $prefix + 1, 1) = ' '" {
  79. !{$length - $prefix + 1}
  80. }
  81. X:otherwise {
  82. !length(text = "$text", prefix = "$prefix", length = "$length - 1")
  83. }
  84. }
  85. }
  86. X:template = "at" {@}
  87. X:template = "br" { !{$br} }
  88. X:template = "nobr" { !{translate(., ' ', ' ')} }
  89. }