使用 XSLT 解析 XML 字符串

发布于 2024-10-08 08:25:42 字数 565 浏览 4 评论 0 原文

我有一个 XML 文档,其中有一个包含 HTML 代码的 TextBlock。

<TextBlock>
  <h1>This is a header.</h1>
  <p>This is a paragraph.</p>
</TextBlock>

然而,在实际的 XML 中,它的编码如下:

<TextBlock>
  &lt;h1&gt;This is a header.&lt;/h1&gt;
  &lt;p&gt;This is a paragraph.&lt;/p&gt;
</TextBlock>

因此,当我使用 时,它会显示页面上的所有编码。有没有办法使用 XSLT 将 TextBlock 元素内的 < 转换为 <

I have an XML document that has a TextBlock that contains HTML code.

<TextBlock>
  <h1>This is a header.</h1>
  <p>This is a paragraph.</p>
</TextBlock>

In the actual XML, however, it is coded like this:

<TextBlock>
  <h1>This is a header.</h1>
  <p>This is a paragraph.</p>
</TextBlock>

So when I use <xsl:value-of select="TextBlock"/> it displays all of the coding on the page. Is there a way using XSLT to convert < to < within the TextBlock element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

楠木可依 2024-10-15 08:25:42
<xsl:value-of select="TextBlock" disable-output-escaping="yes"/>

结果:

<h1>This is a header.</h1>
<p>This is a paragraph.</p>

Firefox 有一个相应的错误: https://bugzilla.mozilla.org/show_bug .cgi?id=98168,其中包含很多评论,读起来很有趣。

我现在正在寻找修复方法。

编辑

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="disable-output-escaping.xsl"/> 
    <!-- https://bug98168.bugzilla.mozilla.org/attachment.cgi?id=434081 -->
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/TextBlock">
        <xsl:copy>
            <xsl:call-template name="disable-output-escaping"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

通过 Firebug 检查时,结果看起来正确:

<textblock>
    <h1>This is a header.</h1>
    <p>This is a paragraph.</p>
</textblock>
<xsl:value-of select="TextBlock" disable-output-escaping="yes"/>

and the result:

<h1>This is a header.</h1>
<p>This is a paragraph.</p>

Firefox has a corresponding bug: https://bugzilla.mozilla.org/show_bug.cgi?id=98168, which contains a lot of comments and is an interesting reading.

I am looking for a fix now.

EDIT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="disable-output-escaping.xsl"/> 
    <!-- https://bug98168.bugzilla.mozilla.org/attachment.cgi?id=434081 -->
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/TextBlock">
        <xsl:copy>
            <xsl:call-template name="disable-output-escaping"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

When inspecting via Firebug, the result looks correct:

<textblock>
    <h1>This is a header.</h1>
    <p>This is a paragraph.</p>
</textblock>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文