ノードまたはテキストが含まれているかどうかを確認するのに苦労しています。
次の 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」の下に occhiello、titolo、および sommario の 3 つのノードがあります。これらの 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」と間違っています。テキストがあっても「テキストなし」クラスを追加しています。おそらく原因は含まれていないと思います
タグですが、ネストされたタグにあります(さらにネストされたレベルを持つことができます)。
それを修正する方法はありますか?
皆さんありがとう。