gpt4 book ai didi

xslt - xslt 中的 cdata for html

转载 作者:行者123 更新时间:2023-12-02 01:22:35 25 4
gpt4 key购买 nike

我有一个生成纯 HTML 的 XSLT 文件。我需要将一些元素包装在 CDATA block 中,因此打算使用 cdata-section-elements。但是,如果我想要包含 CDATA 的元素只有一个 <p>在页面上,如何才能不将 CDATA 放入所有其他 <p> 中元素?

输入数据是这样的:

<item>
...
<g:category>Gifts under &amp;pound;10</g:category>
</item>

我的 XSL 是:

<xsl:element name="a">
<xsl:attribute name="href">productlist.aspx</xsl:attribute>
<xsl:copy-of select="text()" />
</xsl:element>

我希望它呈现如下内容:

Gifts under £10

但我得到的是:

Gifts under &pound;10

最佳答案

假设您有某种方法来定位 <p>您想要将其包含在 CDATA 部分中的标记,您可以执行以下操作:

<xsl:output method="xml" version="1.0" encoding="UTF-8" 
indent="yes" omit-xml-declaration="yes"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p[@test = 'test']">
<xsl:copy>
<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
<xsl:apply-templates/>
<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
</xsl:copy>
</xsl:template>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

在这种情况下所有 <p>具有属性 test = 'test' 的标签将应用 CDATA,所有其他标签将正常输出。

关于xslt - xslt 中的 cdata for html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com