1
Предложить, как проверить элемент «simplepara» имеет текст сразу после него. [Матч Шаблон должен быть от 'simplepara', как указано в ниже XSLT]Как проверить непосредственный узел элемента - это текст?
XML:
<article>
<simplepara>Fig 1</simplepara>The text1<simplepara>Fig 2</simplepara><simplepara>Fig 3</simplepara>The text2<simplepara>Fig 4</simplepara><simplepara>Fig 5</simplepara> the text3<simplepara>Fig 5</simplepara>
</article>
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<xsl:template match="simplepara">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
<xsl:if test="following-sibling::node()[1][text()][normalize-space()!='']">
<xsl:comment select="'Text-Node'"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Требуемый результат:
<?xml version="1.0" encoding="UTF-8"?><article>
<simplepara>Fig 1</simplepara><!--Text-Node-->The text1<simplepara>Fig 2</simplepara><simplepara>Fig 3</simplepara><!--Text-Node-->The text2<simplepara>Fig 4</simplepara><simplepara>Fig 5</simplepara><!--Text-Node--> the text3<simplepara>Fig 5</simplepara>
</article>
Хорошо (+1). Также обратите внимание, что '[normalize-space()! = '']' Может упростить '[normalize-space()]' – kjhughes