Я решил с помощью файла xsl
, подобного этому:
id
генерируется функцией generate-id
XPATH.
Таким образом я копирую все узлы и вставляю уникальный идентификатор в элемент
непосредственно перед элементом
(, который является элементом моего входного XML-файла).
Команда с xmlstarlet —:
xmlstarlet tr stile.xsl input.xml
Да, можно использовать регистры внутри макроса, но вы должны сказать troff, чтобы он ждал оценки значения, которое будет оценено, в то время, когда макрос вызывается , вместо определенного .
Таким образом, вы должны экранировать обратную косую черту перед строкой, запрашивающей значение регистра в определении макроса, заканчивая
.de MACRO \"defines a new macro with name MACRO
.nr a 1 \"creates a number register with the name a and the value 1
\\n[a] \"prints the content of register a
.. \"end of MACRO definition
.MACRO \"calls MACRO
Таким образом, значение, указанное в макросе, печатается, поэтому 1
в данном случае.