Я работаю с xslt для очистки html-кода, который создается редактором.XSLT recursive html clean
Код содержит следующую структуру:
<span name="x">1<b>test text</b>
<span name="y">2</span>
</span>
<span name="y">3
<span name="y">4</span>
<span name="x">1</span>
</span>
<span name="y">5<i>test</i>
<span name="y"><u>6</u>7</span>
</span>
Дело в том, что нужно XSLT сохранить структуру HTML. И нужно выполнить 2 действия. , если он находит пролет с именем x. Он должен удалить его. (Это не проблема)
Но когда он находит y, который не находится внутри x. Ему нужно взять дочерние узлы (значение node()
) и поместить их в выходной файл. Дочерние узлы должны быть проверены для любых других интервалов.
A.t.m У меня были некоторые xslt, которые находили первые уровни (числа 1 и 3). Но он копирует внутренний html и не применяет шаблоны для innerHTML.
У кого-нибудь возникла эта проблема или вы знаете решение?
РЕДАКТИРОВАТЬ: Требуется выход, как описано выше.
345<i>test</i><u>6</u>7
EDIT2: XSLT
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="span[@name='x']">
//This deletes the node.. But only one level?
</xsl:template>
<xsl:template match="span[@name='y']">
//This needs to play all templates again to remove or get inner nodes() see case x & y
</xsl:template>
Pls. поделитесь своим сгенерированным XSLT и требуемым выходом. –
См. Изменения в моем сообщении – spons
Это отлично работает для меня, если вы добавили в template –