我有一个xml文件,它在一个元素中包含一些html代码。然而,html元素被转义,声明为CDATA或实体为'<'和'>'。
因此,我不能简单地将这些元素与xsl-element“模板”匹配。 我想用我的样式表访问和修改html元素及其属性,我知道无论如何这是可能的,但我找不到如何做到的方法。
我非常感谢你的帮助,因为我在这个问题上处理了很长时间。 非常感谢你提前!
<?xml version="1.0"?>
<Master>
<Content>
<SomeHTML> < img src="./world.jpg" >
<!-- This is one out of many other html elements I want to access -->
</SomeHTML>
</Content
</Master>
答案 0 :(得分:1)
您可以使用扩展函数来解析<SomeHTML>
内的文本,将其传递到模板(可能使用其他模式),最后使用<xsl:value-of disable-output-escaping="true"/>
作为输出。
扩展函数当然必须得到解析器的支持,这意味着您受到解析器或环境的限制,可能由于各种原因而不允许安装和/或使用此类扩展函数:
http://docs.oracle.com/cd/B10464_05/web.904/b12099/adx04xsl.htm#1008934
Saxon有saxon:parse(string),但根据文档,这仅限于结构良好的XML - 据我所见,你的例子中没有。
< / LI>答案 1 :(得分:1)
不,在纯XSLT中这是不可能的,因为字符数据是常规文本,而不是html,因此您可以像使用字符串函数(例如substring)一样处理它。您必须使用HTML解析器的扩展。它是特定于处理器的。
html应该首先作为标记存储在XML文件中(但当然是XHTML,因此必须关闭<img>
标记或将其用作空<img/>
)。
答案 2 :(得分:1)
您使用哪种XSLT处理器?例如,对于Saxon 9,您可以使用类似http://www.saxonica.com/documentation/extensions/functions/parse-html.xml的扩展函数。