Могу ли я использовать XSLT для преобразования следующего XML:XSLT: Создание новых тегов вокруг других тегов
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<p>The chemical formula for water is H<sub>2</sub>O. The rest of this paragraph is not relevant.</p>
<p>Another paragraph without subscripts.</p>
</Root>
к этому:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<p><text>The chemical formula for water is H</text><sub>2</sub><text>O. The rest of this paragraph is not relevant.</text></p>
<p>Another paragraph without subscripts.</p>
</Root>
т.е. завернуть различные части ара элемента, который содержит вложенные элементы в текстовые элементы?
Это мой XSLT до сих пор:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="Root|p">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[child::*[name()='sub']]">
<xsl:copy>
<xsl:element name="text">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:copy>
</xsl:template>
<xsl:template match="sub">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
но оборачивает весь абзац в <text>
элемент и не делит его на . Как я могу заставить его делать то, что я хочу?
Немного справочной информации, если вы заинтересованы: Я хочу, чтобы импортировать XML в Adobe InDesign, но если я применяю только стиль символа югу к субэлементам второй половины пункта (начиная с O) будет по-прежнему находиться в индексе. Я должен обернуть остальные биты в <text>
, чтобы форматирование было правильным.