Строки, как правило, не имеют существенного значения в XML, поэтому представление об этом с точки зрения строк файла (а не иерархической структуры XML) на самом деле не является правильным способом решения проблемы, и поэтому оно дасту вас проблемы, потому что многие синтаксические анализаторы XML не сообщают номера строк.
Кроме того, удаление всего до определенной строки почти наверняка приведет к тому, что XML будет неправильно сформирован.
Если выЕсли вы хотите удалить все элементы <Cp>
, которые предшествуют элементу с дочерним элементом <Mu>2</Mu>
, вы можете сделать это в XSLT достаточно легко.Вам нужно одно правило, которое копирует все без изменений, которое в XSLT 3.0 можно записать
<xsl:mode on-no-match="shallow-copy"/>
, но в более ранних версиях требуется более подробное
<xsl:template match="*">
<xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
</xsl:template>
, а затем второе правило, которое удаляетвыделенные элементы:
<xsl:template match="Cp[following-sibling::Cp/Mu='2']"/>