nginx-quic/docs/xsls/changes.xsls
Maxim Dounin 1640941d6c Docs: changes.xml dates converted to ISO 8601 format.
Dates in ISO 8601 format are in line with what is used in nginx.org news,
and are generally less ambiguous and easier to work with.

The changes.xml was converted using sed:

$ sed 's/date="\(..\)\.\(..\)\.\(....\)"/date="\3-\2-\1"/g' changes.xml

Appropriate changes to changes.xsls were introduced.
2017-02-16 18:32:49 +03:00

134 lines
3.2 KiB
Text

X:stylesheet {
X:output method="text";
X:param lang="'en'";
X:param configuration="'../xml/change_log_conf.xml'";
X:var conf = "document($configuration)/configuration";
X:var start = "$conf/start";
X:var indent = "$conf/indent";
X:var max = "$conf/length";
X:var br = {<br>}
X:template = "/" { !! "change_log"; }
X:template = "change_log" { !! "changes"; }
X:template = "changes" {
X:text {
}
!{substring(concat($conf/changes[@lang=$lang]/title,
//change_log/@title,
' ', @ver,
' '),
1, $conf/changes[@lang=$lang]/length)}
X:if "$lang='ru'" {
!{substring(@date, 9, 2)}
X:text {.}
!{substring(@date, 6, 2)}
X:text {.}
!{substring(@date, 1, 4)}
}
X:if "$lang='en'" {
!{substring(@date, 9, 2)}
!{$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
6, 2))]}
!{substring(@date, 1, 4)}
}
X:text {
}
!! "change";
X:text {
}
}
X:template = "change" {
X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]"
X:var postfix = { X:if "$prefix" { X:text {: } } }
!! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)");
}
X:template para(prefix) = "para" {
X:var text = { !!; }
X:text {
}
!wrap(text = "normalize-space($text)",
prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } })
}
X:template wrap(text, prefix) {
X:if "$text" {
X:var offset = {
X:choose {
X:when "starts-with($text, concat($br, ' '))" {
!{string-length($br) + 2}
}
X:when "starts-with($text, $br)" {
!{string-length($br) + 1}
}
X:otherwise {
1
}
}
}
X:var length = {
!length(text = "substring($text, $offset)",
prefix = "string-length($prefix)",
length = "$max")
}
!{$prefix}
!{normalize-space(translate(substring($text, $offset, $length),
' ', ' '))}
X:text {
}
!wrap(text = "substring($text, $length + $offset)", prefix = "$indent")
}
}
X:template length(text, prefix, length) {
X:var break = "substring-before(substring($text, 1,
$length - $prefix + string-length($br)),
$br)"
X:choose {
X:when "$break" { !{string-length($break)} }
X:when "$length = 0" { !{$max - $prefix} }
X:when "string-length($text) + $prefix <= $length" {
!{$length - $prefix}
}
X:when "substring($text, $length - $prefix + 1, 1) = ' '" {
!{$length - $prefix + 1}
}
X:otherwise {
!length(text = "$text", prefix = "$prefix", length = "$length - 1")
}
}
}
X:template = "at" {@}
X:template = "br" { !{$br} }
X:template = "nobr" { !{translate(., ' ', ' ')} }
}