Я новичок в мире XSLT, заранее благодарю вас за ваше понимание. Мне нужно подготовить xml, который будет отправлен на сервер Adobe InDesign. В файлах html, которые являются моими входными данными, которые мне нужно преобразовать в xml и отправить в Adobe InDesign с помощью преобразования XSLT, у меня есть элементы «li» с тегами «span» и «i» (itali c) внутри. Я хочу, чтобы теги «i» были выделены курсивом в последней строке xml для InDesign. Я попытался сопоставить теги «i» по следующему xslt:
<xsl:template match="i" mode="process-text">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
<Content>
<xsl:copy-of select="text()"/>
</Content>
</CharacterStyleRange>
</xsl:template>
, но без результатов.
Например, у меня есть следующий ввод:
<li class="MsoNormal" style="mso-list:l0 level2 lfo1;tab-stops:list 1.0in">Systolic dysfunction: an <i>inotropic</i> abnormality, due to myocardial infarction (MI) or dilated or ischemic cardiomyopathy (CM), resulting in diminished systolic emptying (ejection fraction <45%).</li>
Я хотел бы преобразовать его в следующий:
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BL2">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content>Systolic dysfunction: an </Content>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
<Content>inotropic</Content>
</CharacterStyleRange>
<Content> abnormality, due to myocardial infarction (MI) or dilated or ischemic cardiomyopathy (CM), resulting in diminished systolic emptying (ejection fraction <45%).</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
Моя первоначальная проблема заключается в том, как разделить тег "li" и обработать (отдельно) текст внутри, а также отдельно обработать "span" и " я "теги внутри" li "XSLT? Заранее благодарим вас за любую помощь.
ОБНОВЛЕНИЕ: Мой основной шаблон для элементов «li»:
<xsl:template match="li[not(descendant::p) and not(ancestor::section[@class='references' or @class='References'])]" mode="li-pass1">
<xsl:variable name="depth" select="count(ancestor::li) + 1"/>
<xsl:variable name="listType">
<xsl:choose>
<xsl:when test="parent::ol">
<xsl:value-of select="'NL'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'BL'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/{$listType}{if ($depth eq 1) then '' else $depth}">
<xsl:choose>
<xsl:when test="descendant::i/text()">
<Content>
<xsl:copy-of select="./text() | descendant::span/text() "/>
</Content>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
<Content>
<xsl:copy-of select="descendant::i/text()"/>
</Content>
</CharacterStyleRange>
</xsl:when>
<xsl:otherwise>
<Content>
<xsl:copy-of select="./text() | descendant::span/text() "/>
</Content>
</xsl:otherwise>
</xsl:choose>
</ParagraphStyleRange>
</xsl:template>
Этот шаблон влияет на окончательный xml в неправильный путь. Я получил следующий результат:
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BL">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content>Two potential pathophysiologic conditions lead to the clinical findings of HF, namely systolic and/or diastolic heart dysfunction.
</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
<Content>inotropiccompliance</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]"/>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BL2">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content>Systolic dysfunction: an abnormality, due to myocardial infarction (MI) or dilated or ischemic cardiomyopathy (CM), resulting in diminished systolic emptying (ejection fraction <45%).</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
<Content>inotropic</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]"/>
</ParagraphStyleRange>
Итак, как видите, элементы itali c находятся в отдельном теге, но без другого содержимого. Не могли бы вы посоветовать, что мне нужно сделать?