Я хочу изменить узлы с одного значения на другое. Не значение узла, а имя узла. Не содержимое внутри тегов.
Википедия называет «теги» как:
Тег Тег - это конструкция разметки, которая начинается с <и заканчивается>. Теги бывают трех видов:
start-tag, such as <section>;
end-tag, such as </section>;
empty-element tag, such as <line-break />.
Итак, я хочу переименовать все вышеперечисленные теги одного имени в другое. Поскольку foo
до bar
или bar
до baz
, et c.
работает saxonb-xslt
возвращает:
Saxon 9.1.0.8J from Saxonica
Возможно, эта версия Saxon
не имеет возможностей или, что более вероятно, xslt
ошибочен.
усечено xml
из большего файла:
<csv>
<foo>
<entry>Reported_Date</entry>
<entry>HA</entry>
<entry>Sex</entry>
<entry>Age_Group</entry>
<entry>Classification_Reported</entry>
</foo>
<bar>
<entry>2020-01-26</entry>
<entry>Vancouver Coastal</entry>
<entry>M</entry>
<entry>40-49</entry>
<entry>Lab-diagnosed</entry>
</bar>
<record>
<baz>2020-02-02</baz>
<entry>Vancouver Coastal</entry>
<entry>baz</entry>
<entry>50-59</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-05</entry>
<entry>Vancouver Coastal</entry>
<entry>F</entry>
<entry>20-29</entry>
<entry>Lab-diagnosed</entry>
</record>
</csv>
файл xslt
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output indent="yes"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="foo">
<baz><xsl:apply-templates/></baz>
</xsl:template>
</xsl:stylesheet>
ошибка:
Error at xsl:mode on line 9 column 41 of bc.rename.xslt:
XTSE0010: Element xsl:mode must not appear directly within xsl:stylesheet
Error at xsl:mode on line 9 column 41 of bc.rename.xslt:
XTSE0010: Unknown XSLT element: mode
Failed to compile stylesheet. 2 errors detected.
Как документ xml
, так и xslt
документ проходят xmllint
без ошибок.