gpt4 book ai didi

xml - 如何用替换br标签 XSL模板中的标签?

转载 作者:行者123 更新时间:2023-12-03 16:45:52 25 4
gpt4 key购买 nike

假设我有一个简单的XML文件:

<data>
<text>Hello world!&lt;br&gt;Nice to see you all!&lt;br&gt;Goodbye!</text>
</data>


现在我想将所有 &lt;br&gt;字符串替换为 &#10;字符串,因此结果应为:

<transformed>
<text>Hello world!&#10;Nice to see you all!&#10;Goodbye!</text>
</transformed>


我该怎么做呢?

XSL替换功能易于实现(例如,在 http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx中),但棘手的部分是让XSL转换器输出这些 &#10;字符串。

完美的答案将是可以解决问题的XSL模板。

最佳答案

用:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/data">
<transformed>
<text>
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="text" />
<xsl:with-param name="replace">&lt;br&gt;</xsl:with-param>
<xsl:with-param name="by">&amp;#10;</xsl:with-param>
</xsl:call-template>
</text>
</transformed>
</xsl:template>

<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text, $replace)" />
<xsl:value-of select="$by" disable-output-escaping="yes" />
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>


输出:

<transformed>
<text>Hello world!&#10;Nice to see you all!&#10;Goodbye!</text>
</transformed>


注意!:

disable-output-escaping属性设置为 yes

关于xml - 如何用替换br标签 XSL模板中的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079948/

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