0

我有一个包含 cdata 部分的 xml。我已经设法使用 XSLT 获取 cdata 文本。但是在 CDATA 里面我们有 html。那么任何人都可以帮助我如何解析 HTMl。下面是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">

        <xsl:variable name="dummy">
            <xsl:value-of select="somexpath"/>
        </xsl:variable>
    </xsl:template>

</xsl:stylesheet>

直到这是一个 html 的输出:

    <div class="feed-description">
<p style="text-align: justify;">Les amateurs du jeu Dance Central 3 pourront ajouter quelques nouvelles pièces à leur collection en février. Parmi les artistes qui seront disponibles via téléchargements, on retrouve le groupe de l'heure One Direction, Justin Bieber, Ellie Goulding et B.o.B. Dès demain le <strong>5 février</strong>, vous pourrez danser sur la chanson ''<strong>What Makes You Beautilful</strong>'' de One Direction.
</p>
</div>

现在我想使用 XSLT 读取 p 标签的内部文本。

请帮帮我。

4

2 回答 2

0

请尝试

<xsl:variable name="dummy">
   <xsl:value-of select="msxsl:node-set(somexpath)//p/text()"/>
</xsl:variable>
于 2013-02-07T09:59:13.490 回答
0

你有几个选择,没有一个是你说你想要的(对不起)。我突然想到的那些(肯定还有其他的)包括:

  1. 您可以创建一个提取 HTML 的工作流,将其传递给 Tidy 或其他类似工具以生成 XHTML,将其作为标记而不是字符序列重新插入到文档中,然后在结果上运行您的样式表。
  2. 您可以在 XSLT 中编写 HTML 解析器,以获取输入文档中的字符序列并为其生成元素结构。这将是乏味、容易出错且耗时的,当你完成它时,主要浏览器将推出新版本,以不同方式处理极端情况,所以你的用户会抱怨你的解析器没有做对的'。但是,如果您喜欢做那种事情,那将是具有挑战性和乐趣的,当您成功时,您将拥有严重的黑客信誉。
  3. 您可以寻找可以为您处理此任务的 XSLT 处理器的扩展。(我不知道任何手头,但这并不意味着它们不存在。)
  4. 您可以重新考虑项目的设计。例如,您可以重新构造输入,以便不是伪装成字符数据的 HTML,而是任何元素的内容,它是 XSLT 旨在处理的那种类型的实际标记。您可以将 HTML 有效负载的处理从 XSLT 移到 Javascript 和 DOM 中。你可能会洗掉整个问题,然后搬到南海。

祝你好运。

于 2013-02-07T17:55:08.960 回答