Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XSLT解析HTML_Xslt - Fatal编程技术网

使用XSLT解析HTML

使用XSLT解析HTML,xslt,Xslt,我有一个包含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:x

我有一个包含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>

Les业余舞蹈团中央3号pourront ajouter quelques nouvelles piècesáleur collection en février。艺术家们通过收费进行了激烈的争论,在一个方向的回溯上,贾斯汀·比伯、埃莉·古尔丁和B.o.B.德马因·勒·费夫里埃,你认为香奈儿河畔的波里斯·丹瑟是什么让你美丽。

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

请帮帮我。

请试试

<xsl:variable name="dummy">
   <xsl:value-of select="msxsl:node-set(somexpath)//p/text()"/>
</xsl:variable>

您有几个选择,没有一个是您所说的您想要的(对不起)。我突然想到的(当然还有其他的)包括:

  • 您可以创建一个工作流,提取HTML,将其传递给Tidy或其他类似工具以生成XHTML,将其作为标记而不是字符序列重新插入文档,然后对结果运行样式表
  • 您可以用XSLT编写HTML解析器,以获取输入文档中的字符序列并为其生成元素结构。这将是乏味的、容易出错的和耗时的,当您完成它时,主要浏览器将推出新版本,以不同的方式处理角落情况,因此您的用户将痛苦地抱怨您的解析器做得不“正确”。但是,如果你喜欢做这类事情,它将是富有挑战性和愉快的,当你成功的时候,你将有严重的黑客信誉
  • 您可以寻找XSLT处理器的扩展来为您处理此任务。(我不知道有什么现成的,但这并不意味着它们不存在。)
  • 您可以重新思考项目的设计。例如,您可以重新构造输入,以使XSLT设计要处理的那种实际标记的内容取代伪装为字符数据的HTML。您可以将HTML负载的处理从XSLT转移到Javascript和DOM中。你可能会对整个问题置之不理,搬到南海去
  • 祝你好运