Я новичок в XSLT, поэтому я считаю, что то, что я ищу, очень просто.
Я начинаю с некоторого XML, подобного этому:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<record>
<id>10</id>
<version>v1</version>
<data>A Value</data>
</record>
<record>
<id>12</id>
<version>v2</version>
<data>Another Value</data>
</record>
</root>
Я хочу сделать 3 вещи с этим:
- Фильтр, чтобы я мог видеть только результаты v2
- Очистить
<id>
- Заменить "v2" на "v3"
Таким образом, результат должен быть:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<record>
<id></id>
<version>v3</version>
<data>Another Value</data>
</record>
</root>
Оригинальный XML - 9 МБ, но это дает идею.
Я выяснил, что такое фильтрация, но я не уверен, как применить несколько шаблонов к одним и тем же данным одновременно, как обнулить идентификатор и как добавить новое значение в <version>
, Значение новой версии является просто статическим значением, поэтому оно очень прямолинейно.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" />
<xsl:template match="record">
<xsl:if test="version='v2'">
<xsl:copy-of select="." />
</xsl:if>
</xsl:template>
</xsl:stylesheet>