Таким образом, набор букв в @template
должен быть точно таким же, как набор букв в ./attribute/@param
?
То есть distinct-values(string-to-codepoints(replace(@template, '\P{L}', '')))
должен совпадать с distinct-values(attribute/@param/string-to-codepoints())
.
Так как же вы утверждаете, что две последовательности содержат одинаковые значения при перестановке?
В XPath 3.1, deep-equal(sort($X), sort($Y))
В XPath 2.0 я не могупридумайте что-нибудь лучше, чем
empty($X[not(.=$Y)]) and empty($Y[not(.=$X)])
Я оставлю вас, чтобы все это сложить.