我很难找出节点或包含文本。
考虑以下 xml 示例:
<?xml version="1.0" encoding="utf-8"?>
<doc xml:lang="it">
<articolo>
<titolazione id="U20690661166yt" contentType="headline">
<occhiello class="occhiello">
<p>
<span class="parolachiave">L’ALTRO COLPO PER L’ATTACCO</span>
</p>
</occhiello>
<titolo class="titolo">
<p>Il gran giorno</p>
<p>di Llorente:</p>
<p>arriva a Torino </p>
<p>e fa le visite</p>
</titolo>
<sommario class="catenaccio">
<?EM-dummyText [sommario]?>
</sommario>
</titolazione>
</articolo>
如您所见,我在“Titolazione”下有 3 个节点:occhiello、titolo 和 sommario。我需要创建一个能够理解在这 3 个节点内是否存在文本(在任何级别)的模板,并根据该添加还添加“无文本”类,因此我可以设置不同的样式。
这是为 occhiello 制作的示例:
<xsl:template name="occhiello">
<xsl:if test="/doc/articolo/titolazione/occhiello">
<xsl:choose>
<xsl:when test="string-length(normalize-space(/doc/articolo/titolazione/occhiello/*/text())) = 0">
<h6 class="overhead no-text">
<xsl:apply-templates select="/doc/articolo/titolazione/occhiello/*" />
</h6>
</xsl:when>
<xsl:otherwise>
<h6 class="overhead">
<xsl:apply-templates select="/doc/articolo/titolazione/occhiello/*" />
</h6>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
“titolo”和“sommario”的模板是相同的,只是 xpath 发生了变化。现在我注意到这个模板接近我需要的东西,但有时还是会出错。如果你看这个例子是认识到“titolo”有文本,是认识到“sommario”没有文本但由于某种原因在“titolazione”上犯了一个错误。即使有文本,它也会添加“无文本”类。我想也许原因不包含在
标签但在嵌套标签中(我可以有更多的嵌套级别)。
知道如何纠正它吗?
谢谢大家。