Привет. Я хочу исключить определенный элемент, в данном случае <ph>
и сохранить его подэлементы.XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<p>
<s>
<ph>
<w>this</w>
<w>is</w>
<w>my</w>
<w>first</w>
<w>sentence</w>
<pc>.</pc>
</ph>
</s>
<s>
<ph>
<w>this</w>
<w>is</w>
<w>my</w>
<w>second</w>
<w>sentence</w>
<pc>.</pc>
</ph>
</s>
</p>
желаемый вывод:
<?xml version="1.0" encoding="UTF-8"?>
<p>
<s>
<w>this</w>
<w>is</w>
<w>my</w>
<w>first</w>
<w>sentence</w>
<pc>.</pc>
</s>
<s>
<w>this</w>
<w>is</w>
<w>my</w>
<w>second</w>
<w>sentence</w>
<pc>.</pc>
</s>
</p>
код xsl:
<?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:template match="p|s|w|pc">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="p|s|w|pc"/>
<xsl:apply-templates select="*/*[not(self::phr)]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Проблема заключается в том, что иногда, когда <ph>
нет, я теряюсубэлементы, или имеют тот же файл XML с элементом <ph>
.