使用样式表(XSLT)访问XML中的字符数据

时间:2012-01-02 13:34:37

标签: xml xslt

我有一个xml文件,它在一个元素中包含一些html代码。然而,html元素被转义,声明为CDATA或实体为'<'和'>'。

因此,我不能简单地将这些元素与xsl-element“模板”匹配。 我想用我的样式表访问和修改html元素及其属性,我知道无论如何这是可能的,但我找不到如何做到的方法。

我非常感谢你的帮助,因为我在这个问题上处理了很长时间。 非常感谢你提前!

<?xml version="1.0"?>
<Master>
 <Content>
  <SomeHTML> &lt; img src="./world.jpg" &gt;  
             <!-- This is one out of many other html elements I want to access -->
  </SomeHTML>
 </Content
</Master>

3 个答案:

答案 0 :(得分:1)

您可以使用扩展函数来解析<SomeHTML>内的文本,将其传递到模板(可能使用其他模式),最后使用<xsl:value-of disable-output-escaping="true"/>作为输出。

扩展函数当然必须得到解析器的支持,这意味着您受到解析器或环境的限制,可能由于各种原因而不允许安装和/或使用此类扩展函数:

答案 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的扩展函数。