XSLT 1.0 を使用して、特定の html タグのセットを xml 文字列から除外しようとしています。
ここで、現在私は除外<a>
して<img>
タグ付けしています。タグは<a>
テキストのみ表示したい。
試した XSLT テンプレート:
<xsl:template match="*" mode="ExcludeHTMLTags">
<xsl:choose>
<xsl:when test="local-name() = 'a' or local-name() = 'img'">
<xsl:value-of select="text()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node()|@*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
上記のテンプレートを以下の方法で呼び出します。
<xsl:variable name="guideContent">
<root>
<xsl:apply-templates
select="document(@guideID)/tcm:Component/tcm:Data/tcm:Content/em:GeneralContent/em:Body/node()"
mode="expandXHTML"/>
</root>
</xsl:variable>
<xsl:apply-templates select="msxsl:node-set($guideContent)/node()" mode="ExcludeHTMLTags"/>
入力 XML 文字列:
<root>
This is a test message.
<p>Message within p tag</p> click <a href="www.test.com">here</a>.
<img src="/test.jpg" /> Message after image.
<strong>Message within strong</strong>
<link:component id="XXX" ... >My Link</link:component>
<p>Message after link component</p>
</root>
出力:
<root>
This is a test message.
<p>Message within p tag</p> click here.
Message after image.
<strong>Message within strong</strong>
<link:component id="XXX" ... >My Link</link:component>
<p>Message after link component</p>
</root>
私が間違っていることを提案し、最善の方法を教えてください。