Я не уверен, что это даже возможно с xslt, но здесь. Мне нужно разбить xml из статей на разные части.xslt: Как обернуть различные теги новыми тегами
Мне нужно, чтобы получить все XML, пока первый DIV с именем класса полной ширины и завернуть, что в DIV с именем класса узкой пленкой.
полная ширина div необходимо обернуть с помощью div с именем класса широкоформатный.
Затем начинается новый div с закрытием класса и всем xml до тех пор, пока следующий div с классом полной ширины не перейдет в это. И так далее.
Это упрощенная версия xml. Теги могут иметь вложенный контент, а также атрибуты.
<p>lorem</p>
<div>ipsum</div>
<div class="full-width">
<img src="image.jpg" />
</div>
<p>lorem</p>
<p>ipsum</p>
<div class="full-width">
<img src="image.jpg" />
</div>
<div class="narrow-width">
<img src="image.jpg" />
</div>
<p>lorem</p>
<div class="full-width">
<img src="image.jpg" />
</div>
<div class="full-width">
<img src="image.jpg" />
</div>
<table>ipsum</table>
<p>lorem</p>
<p>ipsum</p>
<div class="narrow-width">
<img src="image.jpg" />
</div>
Это, как мне нужно, чтобы выглядеть после преобразования:
<div class="narrow-wrap">
<p>lorem</p>
<div>ipsum</div>
</div>
<div class="wide-wrap">
<div class="full-width">
<img src="image.jpg" />
</div>
</div>
<div class="narrow-wrap">
<p>lorem</p>
<p>ipsum</p>
</div>
<div class="wide-wrap">
<div class="full-width">
<img src="image.jpg" />
</div>
</div>
<div class="wide-wrap">
<div class="narrow-width">
<img src="image.jpg" />
</div>
</div>
<div class="narrow-wrap">
<p>lorem</p>
</div>
<div class="wide-wrap">
<div class="full-width">
<img src="image.jpg" />
</div>
</div>
<div class="wide-wrap">
<div class="full-width">
<img src="image.jpg" />
</div>
</div>
<div class="narrow-wrap">
<table>ipsum</table>
<p>lorem</p>
<p>ipsum</p>
<div class="narrow-width">
<img src="image.jpg" />
</div>
</div>
XSL для полной ширины части будет что-то вроде этого:
<xsl:template match="div[contains(concat(' ', @class, ' '), ' full-width ')]">
<div>
<xsl:attribute name="class">
wide-wrap
</xsl:attribute>
<xsl:copy-of select="."></xsl:copy-of>
</div>
</xsl:template>
Часть обертывание всего остального содержимого в блоках divs узким обтеканием класса за пределами меня. Возможно ли это, и если да, то как?
'fraid Я должен сфокусироваться, потому что этот вопрос не показывает никаких исследований. что ты уже испробовал? Насколько вы знаете о XSLT? Есть ли причина, по которой вам нужно использовать XSLT вместо других потенциально более способных методов преобразования XML? – Cauterite
@Cauterite: Downvote из-за отсутствия усилий, показанных в вопросе, если вы должны, но критиковать OP при выборе XSLT не подходит: (1) это вызов OP, а не ваш, и (2) вы ошибаетесь: нет более способных Метод преобразования XML. – kjhughes
Я не имел в виду, что XSLT обязательно является плохим выбором. – Cauterite